JAVA_SE基础——44.抽象类的练习

抽象类要注意的细节:

1. 如果一个函数没有方法体,那么该函数必须要使用abstract修饰,把该函数修饰成抽象 的函数。。
2. 如果一个类出现了抽象的函数,那么该类也必须 使用abstract修饰。
3. 如果一个非抽象类继承了抽象类,那么必须要把抽象类的所有抽象方法全部实现。
4. 抽象类可以存在非抽象方法,也可以存在抽象的方法.
5. 抽象类可以不存在抽象方法的。 
6. 抽象类是不能创建对象的。
疑问:为什么抽象类不能创建对象呢?
因为抽象类是存在抽象方法的,如果能让抽象类创建对象的话,那么使用抽象的对象
调用抽象方法是没有任何意义的。

7. 抽象类是存在构造函数的,其构造函数是提供给子类创建对象的时候初始化父类的属性的。

练习:使用抽象类计算一个矩形与圆形的面积。

测试代码1:(注释已经解释的很清楚了,所以我就不对代码做一一讲解了,)

package day09;
/*
需求: 描述一个图形、圆形、 矩形三个类。不管哪种图形都会具备计算面积
与周长的行为,但是每种图形计算的方式不一致而已。
*/
//定义图形抽象类
abstract class Figure{
//定义带参构造方法
Figure(String name){
this.name = name ;
}
//定义String型的成员变量name
String name ;
//定义抽象方法getArea()
public abstract void getArea();
//定义抽象方法getPerimeter()
public abstract void getPerimeter(); }
//定义圆(circle)类 并 继承 图形(Figure)类
class circle extends Figure{
//定义double型的成员变量r
double r ;
//定义double型的常量 PI ,并赋值3.14
static final double PI = 3.14 ;
//定义带参构造方法
circle(String name,double r){
super(name);
this.r = r ;
}
//实现抽象方法getArea()
//定义计算圆的面积的方法
public void getArea(){
System.out.println(name+"的面积是"+PI*r*r);
}
//实现抽象方法getPerimeter()
//定义计算圆的周长的方法
public void getPerimeter(){
System.out.println(name+"的周长是"+2*PI*r);
}
}
//定义矩形(rectangle)类 并 继承 图形(Figure)类
class rectangle extends Figure{
//定义int型成员变量high
int high ;
//定义int型成员变量length
int length ;
//定义带参构造方法
rectangle(String name,int high,int length){
super(name);
this.high = high ;
this.length = length ;
}
//实现抽象方法getArea()
//定义计算矩形的面积的方法
public void getArea(){
System.out.println(name+"的面积是"+high*length);
}
//实现抽象方法getPerimeter()
//定义计算矩形的周长的方法
public void getPerimeter(){
System.out.println(name+"的周长是"+2*(high+length));
}
}
//定义测试类Demo1
public class Demo1 {
//程序入口
public static void main(String[] agrs){
//创建circle类的实例对象,并赋值半径r=3 实例对象: 为对象创建空间并为其赋值
circle c = new circle("圆形",3);
//调用计算圆面积的方法
c.getArea();
//调用计算圆周长的方法
c.getPerimeter() ;
//创建rectangle类的实例对象,并赋值宽(high=2)长(length=4)
rectangle r = new rectangle("矩形",2,4) ;
//调用计算矩形面积的方法
r.getArea();
//调用计算矩形周长的方法
r.getPerimeter();
}
}

运行结果:

JAVA_SE基础——44.抽象类的练习

交流学习企鹅:654249738

上一篇:setInterval定时和ajax请求


下一篇:每隔10秒自动更新svn 定时更新svn 脚本