class A
{
}
class B extends A
{
}
A类是B类的父类
A a;
a = new B();
或
A a;
B b= new B();
a = b;
则称:父类对象a是子类对象b的上转型对象
上转型对只可以操作子类的继承或重写的变量,继承或重写的方法。
eg.
class Father //父类
{
protected int a;
protected int b;
public Father(int a, int b)
{
this.a = a;
this.b = b;
}
public void ShowFather()
{
System.out.println(a + " " + b);
}
public void Func()
{
System.out.println("this is father");
}
}
class Son extends Father //子类
{
protected int c;
protected int d;
public Son(int a, int b, int c, int d)
{
super(a, b); //子类中调用父类构造函数的写法
this.c = c;
this.d = d;
}
public void ShowSon()
{
System.out.println(a + " " + b + " " + c + " " + d);
}
public void Func() //子类中重写父类的Func函数
{
System.out.println("this is son");
}
}
public class Third
{
public static void main(String args[])
{
Father f;
Son s = new Son(10, 20, 30, 40);
f = s; //父类对象f是子类对象s的上转型对象
f.ShowFather(); //正确,不可以访问函数ShowSon,因为该函数不是重写或继承来的
f.Func(); //子类的Func,因为是操作子类重写的方法
}
}
运行结果: