多态性:{1.必须是在继承中
2.子类重写父类方法
3.父类引用指向子类对象
}
public class Pencil {
public void write(String content){
System.out.println("Write:"+content);
}
public static void main(String[] args) {
Pencil p=new RubberPencil(); //父类的引用只调用于子类重写或继承自父类的方法,不能调用子类特有的方法
p.write("hellow world");
((RubberPencil)p).erase("hellow world"); //调用子类特有方法需要强制转换
}
}
class RubberPencil extends Pencil{
public void write(String content){
System.out.println("Rubber Write:"+content);
}
public void erase(String content){
System.out.println("Erarse:"+content);
}
}
接口:
抽象方法不能有实体
方法只能用public abstract修饰
变量会隐式被public static final修饰(不过接口中一般是常量)
public abstract class Test{
public abstract void method(); //不会报错
public abstract void method(){} //会报错
}