public class Person {
public void run(){
System.out.println("father");
}
}
/*
多态注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类有联系 类型转换异常(ClassCastException)
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象(Person s2 = new Student();)
无法被重写的方法:
1.static静态方法,属于类,不属于实例
2.final 常量
3.private 方法,私有的
*/
public class Student extends Person{
@Override
public void run(){
System.out.println("son");
}
public void eat(){
System.out.println("eat much");
}
}
public class Application {标签:子类,多态,Person,Student,oppdemo7,父类,重写,public From: https://www.cnblogs.com/123jgh/p/16787207.html
public static void main(String[] args) {
/*一个对象的实际类型是确定的
new.Student();
new.Person();
*/
//可以指向的引用类型就不确定了:父类的引用指向子类
Student s1 = new Student();//Student能调用的方法为自身有的或者继承父类的
Person s2 = new Student();//Person父类,可以指向子类,但是不能调用子类独有的方法
Object s3 = new Student();
//对象能执行哪些方法,主要看对象左边的类型,和右边关系不大
s2.run();//子类重写了父类的方法,执行了子类的方法
s1.run();
s1.eat();
((Student)s2).eat();//父类不能调用子类独有的方法(强制调用,高(person)转低(student))
}
}