【Java 学习笔记】 抽象类和接口
抽象类:类的设计应当保证父类包含子类的共同特征,有时为了方便会将父类设计的特别抽象以至于没有具体实例,称之为抽象类。
-多重继承:需要从多个类中派生出一个子类,这种能力叫做多重继承。
-单重继承:每个子类都是直接从父类继承的。(Java、C++)
如:圆、椭圆、正方形等等都可以抽象成为几何图形,几何图形便是一个抽象类。几何图形中含有派生类中的一些共有函数,如计算周长和面积,这些在抽象类中都无法计算,所以设置为抽象方法。这些抽象方法会在派生类中实现。
抽象类(几何图形)举例:
public abstract class GeometricObject { private String color = "white"; private boolean filled; /**初始化函数*/ protected GeometricObject() { } /**初始化函数*/ protected GeometricObject(String color, boolean filled) { this.color = color; this.filled = filled; } ///////// 虚函数 /** Abstract method findArea*/ public abstract double findArea(); /** Abstract method findPerimeter*/ public abstract double findPerimeter(); ///////// Getter and Setter /** Get color*/ public String getColor() { return color; } /** Set color*/ public void setColor(String color) { this.color = color; } /** Get filled*/ public boolean isFilled() { return filled; } /** Set filled*/ public void setFilled(boolean filled) { this.filled = filled; } }
抽象类派生类举例(圆)举例:
public class Circle extends GeometricObject{ private double radius; /** Construct a circle with default properties*/ public Circle(double radius) { this.radius = radius; } /** Constrcut a circle with specified radius, filled, color*/ public Circle(double radius, String color, boolean filled) { super(color,filled); this.radius = radius; } /////////// 实现的虚拟方法 @Override public double findArea() { // TODO Auto-generated method stub return radius*radius*Math.PI; } @Override public double findPerimeter() { // TODO Auto-generated method stub return 2*radius*Math.PI; } ////////Getter and Setters public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } }
接口: 接口是一种与类相似的结构,只包含常量和抽象方法。