当前位置 博文首页 > YHSevenWater的博客:Java多态性
对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)
有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
“看左边”:看的是父类的引用(父类中不具备子类特有的方法);
“看右边”:看的是子类的对象(实际运行的是子类重写父类的方法)。
①类的继承关系;②有方法的重写。
package com.java.oop3;
/**
* @ClassName Person
* @Description: 人类
* @Author Seven
* @Date 2021/7/30 9:54
* @Version 1.0
**/
public class Person {
int age;
int weight;
public void run(){
System.out.println("跑步");
}
public void eat(){
System.out.println("吃饭");
}
public void isSmoking(){
System.out.println("抽烟");
}
}
package com.java.oop3;
/**
* @ClassName Man
* @Description: 男人类
* @Author Seven
* @Date 2021/7/30 9:54
* @Version 1.0
**/
public class Man extends Person{
@Override
public void eat() {
System.out.println("男人吃得多");
}
@Override
public void run() {
System.out.println("男人跑得更快");
}
@Override
public void isSmoking() {
System.out.println("男人抽烟的多");
}
}
package com.java.oop3;
/**
* @ClassName Woman
* @Description: 女人类
* @Author Seven
* @Date 2021/7/30 9:54
* @Version 1.0
**/
public class Woman extends Person{
@Override
public void run() {
System.out.println("女人跑得慢一点");
}
@Override
public void eat() {
System.out.println("女人吃得少");
}
@Override
public void isSmoking() {
System.out.println("女人抽烟的少");
}
}
package com.java.oop3;
/**
* @ClassName PersonTest
* @Description: 测试类(多态的使用)
* @Author Seven
* @Date 2021/7/30 9:54
* @Version 1.0
**/
public class PersonTest {
public static void main(String[] args) {
PersonTest test = new PersonTest();
test.function(new Man()); //多态的作用,提高了代码的通用性。
test.function(new Woman());
}
public void function(Person person){
person.eat();
person.run();
person.isSmoking();
}
}
cs