上转型对象不能操作子类新增成员变量和方法但可以操作子类继承和重写的方法
子类重写父类的前提是;方法名一样,参数类型和个数一样。
举一例可以说明之:
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;
}
}
输出结果如下:
正在教大学数学
正在教大学语文