您的位置:首页 > 编程语言 > Java开发

java中抽象类的粗浅理解

2016-03-02 12:22 711 查看
抽象类:
用abstract修饰的类,就是抽象类,抽象类也是类的一种,能被继承。
   
抽象类,不能进行实例化,就是说不能通过new操作。
   
抽象类中可以包含抽象方法和有具体实现的方法。
   

抽象方法:
用abstract修饰的方法,就是抽象方法。抽象方法必须定义在抽象类中,但是抽象类中,不一定全部都是抽象方法。抽象方法不用有实现。

   
抽象类的继承有2种情况:
   
1、抽象类继承抽象类:即子类也是抽象类(用abstract修饰),这时子类可以选择实现父类中的抽象方法,也可以不去实现,但是有一点没有变化,就是子类也不能实例化(不能new操作)。
   
2、非抽象类继承抽象类:这时子类必须实现父类中的全部抽象方法,子类可以被实例化(能new操作)。
   

抽象类的应用意义:
抽象类的出现,在于建立一种约定的机制。约定的机制通过抽象方法来实现,由实现子类进行方法的实现。说白了就是对一组对象(类)进行高层级的抽象,形成一个高层级抽象类,通过这个高层级的抽象类,来约定这组对象的行为。例如下面的实例,对三角形、矩形,当然可以有更多的形状,进行高层级的抽象,即形状。通过抽象类(形状),来约定所有子类都必须提供周长的方法。
实例代码如下:
package java.HighCode;

abstract class Shape {
abstract float perimeter();
}

class Triangle extends Shape {

float side1;
float side2;
float side3;

float perimeter(){
return side1+side2+side3;
}
}

class Rectangle extends Shape{
float side1;
float side2;
float side3;
float side4;

float perimeter(){
return side1+side2+side3+side4;
}
}

public class AbstractT {

public static void main(String[] args) {

Triangle triangle = new Triangle();
triangle.side1 =1;
triangle.side2 =2;
triangle.side3 =3;
System.out.println("三角形的周长为:"+triangle.perimeter());

Rectangle rectangle = new Rectangle();
rectangle.side1 =1;
rectangle.side2 =1;
rectangle.side3 =1;
rectangle.side4 =1;
System.out.println("矩形的周长为:"+rectangle.perimeter());

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: