Day49-多态
作者:互联网
多态
- 动态编译:类型:可扩展性
- 即同一方法可以根据发送对象的不同而采用多种不同的行为方式
- 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)
- 多态存在的条件
- 有继承关系
- 子类重写父类方法
- 父类引用指向子类对象
package com.oop.demo06;
public class Debug {
public static void main(String[] args) {
//子类是父类的扩展!
//子类是父类的扩展!
//子类是父类的扩展!
//一个对象的实际类型是确定的
//new Person();
//new Student();
//可以指向的引用类型就不确定了
Student s1 = new Student();
Person s2 = new Student();//父类的引用指向子类的类型
Object s3 = new Student();//父父类的引用指向子类的类型
//如果父类和子类都有同个方法,重写后只会执行子类方法
s2.run();//不重写前是父类方法 重写后直接执行子类方法
s1.run();
//Person父类型 虽然可以指向子类,但是不能调用子类独有的方法
s1.eat();//对象能执行哪些方法 主要看对象左边的类型,和右边基本上没什么关系
((Student)s2).eat();//强制转换类型
}
}
package com.oop.demo06;
public class Person {
public void run(){
System.out.println("父类跑起来");
}
}
/*
多态注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系,才能强制转换
3.类型没有关系强制转换会抛出异常:类型转换异常! ClassCastException
4.多态存在的条件:继承关系,方法需要重写,父类的引用变量名指向的是子类对象
例如:Person s2 = new Student();父类指向子类
1.static 方法 属于类 不属于实例,不能被重写
2.final 常量,无法被改变,无法被重写
3.private 方法,私有的,无法被重写
*/
package com.oop.demo06;
public class Student extends Person{
@Override
public void run() {
System.out.println("子类跑起来");
}
public void eat(){
System.out.println("子类吃起来");
}
}
标签:Student,子类,多态,Day49,父类,重写,public 来源: https://blog.csdn.net/qq_52857236/article/details/113776499