重寫——上轉型物件不能操作子類新增成員變數和方法但可以操作子類繼承和重寫的方法
上轉型物件不能操作子類新增成員變數和方法但可以操作子類繼承和重寫的方法
子類重寫父類的前提是;方法名一樣,引數型別和個數一樣。
舉一例可以說明之:
class Father {
public Father() {
}
public void shout(Object word){
System.out.println("object father shout:"+word);
}
}
class Son extends Father{
public Son() {
}
public void shout(String word){
System.out.println("string son shout:"+word);
}
}
public class Dan{
public static void main(String[] args){
Son son=new Son();
Father father=son;
son.shout("hello");
father.shout("hello");
}
}
這段程式碼的輸出結果是:
string son shout:hello
object father shout:hello
第二段程式碼,程式碼如下:
public class Demo{
public static void main(String[] args){
Professor p=new Professor();
Teacher t=p;
System.out.println (t.Teaching("數學"));
System.out.println (p.Teaching("語文"));
}
}
class Teacher{
protected String name;
public Teacher(){
}
public String Teaching(String className){
return "正在教小學"+className;
}
}
class Professor extends Teacher{
public Professor(){
}
public String Teaching(String className){
return "正在教大學"+className;
}
}
輸出結果如下:
正在教大學數學
正在教大學語文