diff --git a/day09/src/com/inmind/abstract07/test/Circle.java b/day09/src/com/inmind/abstract07/test/Circle.java new file mode 100644 index 0000000..4f2b1e0 --- /dev/null +++ b/day09/src/com/inmind/abstract07/test/Circle.java @@ -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(); + } +} diff --git a/day09/src/com/inmind/abstract07/test/Rectangle.java b/day09/src/com/inmind/abstract07/test/Rectangle.java new file mode 100644 index 0000000..b3aec99 --- /dev/null +++ b/day09/src/com/inmind/abstract07/test/Rectangle.java @@ -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; + } +} diff --git a/day09/src/com/inmind/abstract07/test/Shape.java b/day09/src/com/inmind/abstract07/test/Shape.java new file mode 100644 index 0000000..5ad953a --- /dev/null +++ b/day09/src/com/inmind/abstract07/test/Shape.java @@ -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; + } +} diff --git a/day09/src/com/inmind/abstract07/test/Test08.java b/day09/src/com/inmind/abstract07/test/Test08.java index 4b662ba..5c6a97a 100644 --- a/day09/src/com/inmind/abstract07/test/Test08.java +++ b/day09/src/com/inmind/abstract07/test/Test08.java @@ -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.继承是可以多层继承的 + } }