首页 > 编程语言 >卡码java基础课 | 21.图形的面积(面向对象)

卡码java基础课 | 21.图形的面积(面向对象)

时间:2024-03-26 11:34:07浏览次数:26  
标签:卡码 java 21 double Shape calculateArea 父类 public String

学习内容:
面向对象的特性,封装、继承、多态。

重点归纳:
成员变量的定义:访问修饰符、数据类型、变量名。访问修饰符,private只能类内部使用,protected只能类内部和子类使用,public可以从任何地方访问。
方法:访问修饰符、返回类型、方法名、参数列表。以及构造函数。
1.封装:通过将属性设置为private私有,然后通过定义方法来查看或者修改属性,达到隐藏对象中不希望被外部直接访问的属性,只能用接口来交互。
2.继承:子类可以继承父类的所有属性和方法,也可以对子类进行扩展。例如Person是父类,Teacher也属于Person,Teacher可以继承Person。继承用extends来表示。
在子类的实现过程中,super代表父类,super()表示父类的构造函数,super.xxx表示父类的属性或方法,@Override表示重写父类的方法,用这个表示验证,防止出错。
3.抽象类:比较抽象的概念,比如Shape(并不是一种具体的图形),用abstract来声明,不能实例化,类中包含一些通用的属性和方法,抽象方法也用abstract,没有具体的实现,只是定义方法名称、参数和返回类型,由子类去实现。
4.多态:父类引用指向子类对象,如Shape myCircle = new Circle(5),double circleArea = myCircle.calculateArea();Shape myRectangle = new Rectangle(4, 6),
double rectangleArea = myRectangle.calculateArea();虽然方法名称相同,但实际调用的方法是根据对象的类型动态确定的。通俗来讲,这样就能在对象多的时候,知道父类是哪个,不至于混乱。

例题:

解:

点击查看代码
import java.util.Scanner;

abstract class Shape{
    private String type;
    
    public abstract double calculateArea();
    
    public String GetType(){
        return this.type;
    }
}

class Rectangle extends Shape{
    
    private double length;
    private double width;
    
    public Rectangle(double length, double width){
        super.type = "Rectangle";
        this.length = length;
        this.width = width;
    }
    
    @Override
    public double calculateArea(){
        return length * width;
    }
}

class Circle extends Shape{
    
    private double radius;
    
    public Circle(double radius){
        super.type = "Circle";
        this.radius = radius;
    }
    
    @Override
    public double calculateArea(){
        return 3.14 * Math.pow(radius, 2);
    }
}

public class Main{
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        
        while(sc.hasNext()){
            String info = sc.next();
            if(info.equals("rectangle")){
                String length = sc.next();
                double l = Double.parseDouble(length);
                String width = sc.next();
                double w = Double.parseDouble(width);
                Shape Rec = new Rectangle(l, w);
                System.out.format("Rectangle area: %.2f\n", Rec.calculateArea());
            }
            else if(info.equals("circle")){
                String radius = sc.next();
                double r = Double.parseDouble(radius);
                Shape Cir = new Circle(r);
                System.out.format("Circle area: %.2f\n", Cir.calculateArea());
            }
            else{
                break;
            }
        }
        
        sc.close();
    }
}

标签:卡码,java,21,double,Shape,calculateArea,父类,public,String
From: https://www.cnblogs.com/cyh-coding/p/18095543

相关文章

  • java打包docker镜像
    参考:https://blog.csdn.net/liuxianwen1990/article/details/136256490 1,把jar包复制/opt/test,cd到这个目录下 2,创建Dockerfile文件,jdk8版本vimDockerfileFROMopenjdk:8-jre-alpineCOPYdemo-0.0.1-SNAPSHOT.jardemo-0.0.1-SNAPSHOT.jarCMD["java","-jar&q......
  • How to get the client IP address with Javascript only
    LearnhowtogettheclientIPaddress(localandprivate)usingonlyjavascript.​​Javascript无法获取(也无法存储)客户端IP,但是Javascript能够创建Http请求,并且服务器端语言能够检索用户的公共IP,因此您可以利用这一优势。换句话说,如果你想检索用户的公共IP,你将依赖于对任......
  • 【Java】Java中是值传递还是引用传递的?
    对于Java的初学者来说值传递和引用传递是一个容易混淆的概念,很多时候调用方法传入参数运行方法后的结果与自己享的不一致。那么Java到底是如何传参的呢?简介值传递:在值传递中,函数接收到的是参数的值的副本,而不是参数本身。当你向函数传递一个参数时,函数会创建一个新的变量......
  • Java中128陷阱源码剖析(一看就懂)
    文章目录128陷阱例子解析问题一问题二问题三128陷阱例子现在有这样的程序,相同的值判断相等,不同的值大小下,得出的结果却不同。publicclassMain{publicstaticvoidmain(String[]args){Integera=123;Integerb=123;int......
  • How to get the client IP address with Javascript only
    LearnhowtogettheclientIPaddress(localandprivate)usingonlyjavascript.​​Javascriptisunabletoget(norstoressomewhere)theclientIP,howeverjavascriptisabletocreateHttprequests,andserversidelanguagesareabletoretrievetheu......
  • Java中的流和IO操作及底层实现原理
    Java中的流和IO操作是Java编程中非常基础和重要的概念,它们主要用于处理数据的输入和输出。下面我会详细解释这两个概念。流(Stream)在Java中,流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输......
  • 洛谷题单指南-集合-P1621 集合
    原题链接:https://www.luogu.com.cn/problem/P1621题意解读:a~b之间的数,把有大于等于p的公共质因数的数进行合并作为一个集合,求一共有多少个集合。解题思路:要进行集合合并、统计集合数,可以使用并查集,有两种做法:1、暴力法80%的数据在1000范围内,因此通过双重循环枚举,判断两个数的......
  • 「Java开发指南」如何从WSDL搭建一个Spring服务?
    本教程的重点是如何从现有的WSDL构建Web服务,实现的WSDL是来自ApacheCXF文档的HelloWorldWSDL协议 的简化版本。在本教程中,您将学习如何:导入WSDL协议部署并运行web服务注意:自定义Spring代码生成需要MyEclipseSpring或Bling授权。MyEclipsev2023.1.2离线版下载MyEclipse......
  • Java面试必问题18:线程安全的集合类和有序的集合类
         精华篇:  极致精简解释有序的集合类包括:TreeMap-基于红黑树实现的有序Map。LinkedHashMap-基于哈希表和双向链表实现的有序Map。TreeSet-基于红黑树实现的有序Set。LinkedHashSet-基于哈希表和双向链表实现的有序Set。示例:有序Map:TreeMap有序Li......
  • java毕业设计房产销售管理小程序[附源码]
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今数字化时代,房产销售行业正经历着前所未有的变革。随着信息技术的飞速发展,传统的房产销售模式已经无法满足市场的需求。购房者越来越倾向于通过网络......