是什么多态

多态是java的三大特性之一

从代码上来说  父类引用指向子类对象就是一种多态

例如  有两个类  person类和 student类  student类继承person类

person 类有 eat 方法和 sleep方法

student 类有study方法

此时  

person  stu = new student();

此时stu不能调用study方法,因为声明的类型是person类型,虽然实际指向的student对象中用study方法

但是在编译期,编译器认为stu是一个person对象,person类里没有study方法,编译不通过,自然无法运行,

所以stu 只能使用父类中已经声明的方法和属性


public class test {
public static void main(String[] args) {
person stu = new student();

stu.print();
stu.person();


System.out.println(stu.name);

student student = (student) stu;
stu.person();
student.student();

System.out.println(student.name);
}
}


class person{
String name = "per";
person(){
System.out.println("调用per无参构造器");
}
public void print(){
System.out.println("person的print方法");
}
public void person(){
System.out.println("person有而stu没有的方法");
}
}


class student extends person{
String name = "stu";
student(){
System.out.println("调用stu无参构造器");
};
public void print(){
System.out.println("student的print方法");
}
public void student(){
System.out.println("studnet有而person没有的方法");
}
}
 

输出

调用per无参构造器
调用stu无参构造器
student的print方法
person有而stu没有的方法
per
person有而stu没有的方法
studnet有而person没有的方法
stu

子类重写父类方法  调用的是子类方法

person stu = new Student()l

调用子类有而父类无的方法  编译报错

 

 

父类引用指向子类对象是一种动态绑定 ,

父类引用指向子类对象有什么作用?

增加代码的扩展性  我也不懂 百度的

 

重写和重载也是多态的一种体现

 

感觉可以理解为一个类或者一个对象的多种心态?

我是一个animal

要飞我就变成鸟形态

要游水就变成鱼形态

要吃饭就变成饭桶形态

 

posted @ 2021-11-05 20:36  霸王龙168  阅读(79)  评论(0)    收藏  举报