多态
向上转型
向下转型
public class Homework11 {
public static void main(String[] args) {
person1 a=new Stu();//向上转型,父类引用指向子类引用
a.eat();//a的编译类型是person1,所以调用的方法只能是person1中的
a.run();//但是在实际运行的时候:运行类型是子类(Stu())
//因此输出为:person eat
//student run
System.out.println("===============");
Stu s= (Stu)a;//向下转型:
s.run();//这时候可以调用的方法是子类和父类的,因为子类继承了父类,当然可以调用父类的方法
s.eat();
s.study();
}
//输出为:
// student run
// person eat
// study study
}
class person1{
public void run()
{
System.out.println("person run");
}
public void eat()
{
System.out.println("person eat");
}
}
class Stu extends person1{
public void run()
{
System.out.println("student run");
}
public void study()
{
System.out.println("study study");
}
}
多态是指方法,属性并没有多态
public class Test1 {
public static void main(String[] args) {
A b=new B();//向上转型
System.out.println(b.a);//输出父类的值10 主要
}
}
class A{
public int a=10;
}
class B extends A{
public int a=5;
}