day09-抽象类的练习
This commit is contained in:
21
day09/src/com/inmind/abstract07/test/Circle.java
Normal file
21
day09/src/com/inmind/abstract07/test/Circle.java
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
23
day09/src/com/inmind/abstract07/test/Rectangle.java
Normal file
23
day09/src/com/inmind/abstract07/test/Rectangle.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
44
day09/src/com/inmind/abstract07/test/Shape.java
Normal file
44
day09/src/com/inmind/abstract07/test/Shape.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,8 @@ package com.inmind.abstract07.test;
|
|||||||
//抽象类的意义是对某一些功能添加约束,要求每个子类都有具体的实现
|
//抽象类的意义是对某一些功能添加约束,要求每个子类都有具体的实现
|
||||||
//重写:子类,可以在此基础必须扩展实现功能
|
//重写:子类,可以在此基础必须扩展实现功能
|
||||||
|
|
||||||
|
import java.util.zip.CRC32;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
- 定义形状抽象类Shape,矩形Rectangle和圆形Circle继承Shape类。
|
- 定义形状抽象类Shape,矩形Rectangle和圆形Circle继承Shape类。
|
||||||
- 圆形只能通过指定半径的方式,创建Circle对象。
|
- 圆形只能通过指定半径的方式,创建Circle对象。
|
||||||
@@ -9,7 +11,7 @@ package com.inmind.abstract07.test;
|
|||||||
|
|
||||||
并且计算出各自的面积和周长
|
并且计算出各自的面积和周长
|
||||||
|
|
||||||
提示要求:在抽象父类中,将所有图形需要的属性,定义出来,可以通过子类的构造方法传递给父类,保存属性值
|
提示要求:在抽象父类中,将所有图形需要的属性(长,宽,半径),定义出来,可以通过子类的构造方法传递给父类,保存属性值
|
||||||
并在子类中各自获取自己独有的属性,计算出面积和周长
|
并在子类中各自获取自己独有的属性,计算出面积和周长
|
||||||
|
|
||||||
抽象类
|
抽象类
|
||||||
@@ -20,4 +22,17 @@ package com.inmind.abstract07.test;
|
|||||||
封装
|
封装
|
||||||
*/
|
*/
|
||||||
public class Test08 {
|
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.继承是可以多层继承的
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user