day09-抽象类的练习

This commit is contained in:
2026-01-23 11:07:13 +08:00
parent e9decab798
commit c7d7928610
4 changed files with 104 additions and 1 deletions

View File

@@ -0,0 +1,21 @@
package com.inmind.abstract07.test;
public class Circle extends Shape{
//作为一个圆,最重要的是半径
public Circle(double r){
super(0.0,0.0,r);
}
@Override
public double getArea() {
//圆的面积PI*R的平方
return Math.PI*getR()*getR();
}
@Override
public double getZC() {
//圆的周长2*PI*R
return 2*Math.PI*getR();
}
}

View File

@@ -0,0 +1,23 @@
package com.inmind.abstract07.test;
public class Rectangle extends Shape{
//如果一个类的构造方法不写,默认会自动添加无参构造
//如果有继承,子类构造方法的第一行,默认调用父类的无参构造
//作为一个矩形需要2个参数长和宽
public Rectangle(double chang ,double kuan){
//通过父类的构造方法,将长宽存储起来
super(chang,kuan,0.0);
}
@Override
public double getArea() {
//长*宽
return getChang()*getKuan();
}
@Override
public double getZC() {
//(长+宽)*2
return (getChang()+getKuan())*2;
}
}

View File

@@ -0,0 +1,44 @@
package com.inmind.abstract07.test;
public abstract class Shape {
//定义各种图形的属性
private double chang;//长
private double kuan;//宽
private double r;//半径
//满参构造方法
public Shape(double chang, double kuan, double r) {
this.chang = chang;
this.kuan = kuan;
this.r = r;
}
//计算面积的方法
public abstract double getArea();
//计算周长的方法
public abstract double getZC();
public double getChang() {
return chang;
}
public void setChang(double chang) {
this.chang = chang;
}
public double getKuan() {
return kuan;
}
public void setKuan(double kuan) {
this.kuan = kuan;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
}

View File

@@ -2,6 +2,8 @@ package com.inmind.abstract07.test;
//抽象类的意义是对某一些功能添加约束,要求每个子类都有具体的实现
//重写:子类,可以在此基础必须扩展实现功能
import java.util.zip.CRC32;
/*
- 定义形状抽象类Shape矩形Rectangle和圆形Circle继承Shape类。
- 圆形只能通过指定半径的方式创建Circle对象。
@@ -9,7 +11,7 @@ package com.inmind.abstract07.test;
并且计算出各自的面积和周长
提示要求:在抽象父类中,将所有图形需要的属性,定义出来,可以通过子类的构造方法传递给父类,保存属性值
提示要求:在抽象父类中,将所有图形需要的属性(长,宽,半径),定义出来,可以通过子类的构造方法传递给父类,保存属性值
并在子类中各自获取自己独有的属性,计算出面积和周长
抽象类
@@ -20,4 +22,17 @@ package com.inmind.abstract07.test;
封装
*/
public class Test08 {
public static void main(String[] args) {
//创建一个矩形对象
Rectangle rectangle = new Rectangle(2, 2);
System.out.println(rectangle.getArea());//4
System.out.println(rectangle.getZC());//8
//创建一个圆形对象
Circle circle = new Circle(2);
System.out.println(circle.getArea());
System.out.println(circle.getZC());
//此时如何快速定义出一个正方行的类,还不用自己实现周长和面积的方法,但是能获取周长和面积!!!
//提示1.正方形是一个特殊的长方形 2.继承是可以多层继承的
}
}