抽象类和接口
这是我在学习《Java语言程序设计》(Y.Daniel Liang)时做的学习笔记。
1.父类定义了相关子类的共同行为。接口可以用于定义类的共同行为(包括非相关的类)。
2.抽象类不可以用于创建对象。抽象类可以包含抽象方法,这些方法将在具体的子类中实现。
3.有时候,一个父类设计得非常抽象,以至于它都没有任何具体的实例。这样的类称为抽象类。
public abstract class GeometricObject {
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
/** Construct a default geometric object */
protected GeometricObject() {
dateCreated = new java.util.Date();
}
/** Construct a geometric object with color and filled value */
protected GeometricObject(String color, boolean filled) {
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}
/** Return color */
public String getColor() {
return color;
}
/** Set a new color */
public void setColor(String color) {
this.color = color;
}
/** Return filled. Since filled is boolean,
* the get method is named isFilled */
public boolean isFilled() {
return filled;
}
/** Set a new filled */
public void setFilled(boolean filled) {
this.filled = filled;
}
/** Get dateCreated */
public java.util.Date getDateCreated() {
return dateCreated;
}
/** Return a string representation of this object */
public String toString() {
return "created on " + dateCreated + "\ncolor: " + color +
" and filled: " + filled;
}
/** Abstract method getArea */
public abstract double getArea();
/** Abstract method getPerimeter */
public abstract double getPerimeter();
}
4.一个包含抽象方法的类必须声明为抽象类。
5.抽象类的构造方法定义为protected,因为它只被子类使用。创建一个具体子类的实例时,它的父类的构造方法被调用以初始化父类中定义的数据域。
6.可以定义一个不包含抽象方法的抽象类,这种类是用来定义新子类的基类的。
7.即使子类的父类是具体的,这个子类也可以是抽象的。
8.抽象类可以用作一种数据类型。
9.接口是一种与类相似的结构,只包含常量和抽象方法。
10.可以使用接口作为引用变量的数据类型或类型转换的结果。
11.类和接口之间的关系称为接口继承。
12.Java允许忽略接口中的修饰符。