Final
一个Final方法不能够被overriden,声明为static和private的方法也可以被看作是final,因为final方法的定义不可以被改变。所有在final类中的方法都是final.
Abstract,
声明类为abstract。继承abstract类的子类必须override abstract 方法。abstract类可以有instance data 和non abstract method apart from abstract methods. Abstract 类也可以由constructors.
public abstract class Employee{
private String name;
public Employee(String name){
name = name;
}
public String getFirstName(){
return name;
}
public String toString()
{
return name;
}
public abstract double earnings();
}
public final class Boss extends Employee{
public Boss(String name)
{
super(name);
}
public double earnings()
{
return 10;
}
public String toString()
{
return "";
}
}
abstract 父类和子类是is a 的关系,所以
我们可以用一个superclasss reference 指向subclass object. 但是这个superclass reference can only access superclass members in the subclass object, BUT NOT SUBCLASS ONLY MEMBERS. ie. Employee employee = boss;
继承:我们创建一个新的类来继承现有类,现有类的参数和方法都被子类拥有使用。通过super.
INTERFACE
包含一些public abstract 方法和public static final 参数。implements interface的类必须define interface中所有的方法,同样的参数数目和return type. 如果不的话,implements的类就变成一个abstract类。
定义一个final类型的reference means the reference will always refers to the same object, however, this object's could still be modified.
public interface Shap{
public static final int Temp = 10;
public abstract double area();
public abstract double volume();
}
public class Point extends Object implements Shape{
public double area()
{
return 213;
}
public double volume()
{
return 213;
}
public String toString()
{
return "";
}
}
当一个类implements一个interface时,它们的关系也是is - a, 就像继承一样。所以Shap shape = point; 即,a point object is Shape. objects of any classes that extends Point are also Shape objects. 所以,
public class Circle extends Point
{
public String toString()
{
return "";
}
public double area()
{
return 213;
}
}
同时,
Shape shape = circle;也可以。
interface 也可以这样用
public interface Constants
{
public static final int ONE = 1;
public static final int TWO = 2;
}