面向对象特征三:多态性

简介: 面向对象特征三:多态性

面向对象特征之三:多态性

1.理解多态性:可以理解为一个事物的多种形态

  • 2.何为多态性:
  • 对象的多态性:父类引用指向子类对象(或子类的对象赋给父类引用)
  • 3.多态的使用:虚拟方法调用
  • 有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
  • 总结:编译:看左边;运行;看右边。
  • 4.多态性的使用前提:1.类的继承关系 2.方法的重写
  • 5.对象的多态性,只适用于方法,而不适用于属性(编译和运行都看左边)

在B站学习java写的代码

代码如下

/*
 * 面向对象特征之三:多态性
 * 
 * 1.理解多态性:可以理解为一个事物的多种形态
 * 2.何为多态性:
 *   对象的多态性:父类引用指向子类对象(或子类的对象赋给父类引用)
 * 
 * 3.多态的使用:虚拟方法调用
 *  有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
 *  总结:编译:看左边;运行;看右边。
 * 
 * 4.多态性的使用前提:1.类的继承关系  2.方法的重写   
 * 
 * 5.对象的多态性,只适用于方法,而不适用于属性(编译和运行都看左边)
 * 
 */

PersonTest类

package com.day0125_2;
public class PersonTest {
  public static void main(String[] args) {
    Person p1=new Person();
    p1.eat();
    Man man =new Man();
    man.eat();
    man.age=25;
    man.earnMoney();
    System.out.println("************");
    //********************************************
    //对象的多态性:父类引用指向子类对象
    Person p2=new Man();
//    Person p3=new Woman();
    //多态的使用:当调用子父类同名同参的方法时,实际执行的是子类重写父类的方法——虚拟方法调用
    //编译在父类,执行在子类
    p2.eat();
    p2.walk();
//    p2.earnMoney();//The method earnMoney() is undefined for the type Person
    System.out.println(p2.id);//1001
  }
}

Person类

package com.day0125_2;
public class Person {
  String name;
  int age;
  int id=1001;
  public void eat() {
    System.out.println("人:吃饭");
  }
  public void walk() {
    System.out.println("人:走路");
  }
}

Man类

package com.day0125_2;
public class Man extends Person{
  boolean isSmoking;
  int id=1002;
  public void earnMoney() {
    System.out.println("男人负责挣钱养家");
  }
  public void eat() {
    System.out.println("男人多吃肉,长肌肉");
  }
  public void walk() {
    System.out.println("男人霸气的走路");
  }
}

Woman类

package com.day0125_2;
public class Woman extends Person{
  boolean isBeauty;
  public void goshopping() {
    System.out.println("女人喜欢购物");
  }
  public void eat() {
    System.out.println("女人少吃,为了减肥");
  }
  public void walk() {
    System.out.println("女人窈窕的走路");
  }
}
相关文章
|
存储 Cloud Native Linux
C++ 面向对象三大特征
C++ 面向对象三大特征
|
Java
面向对象编程的三大特征:封装;继承;多态
面向对象编程的三大特征:封装;继承;多态
64 0
|
29天前
面向对象三大特征
【10月更文挑战第13天】面向对象三大特征是面向对象编程的重要基石,它们为我们提供了一种有效的编程范式和思维方式。理解和掌握这些特征对于开发高质量的软件具有重要意义,它们帮助我们构建出结构清晰、易于维护和扩展的代码体系,提高了软件开发的效率和质量。
129 60
面向对象编程的三大特征是什么?
面向对象编程的三大特征是什么?
|
5月前
|
Python 容器
面向对象详解,面向对象的三大特征:封装、继承、多态-2
面向对象详解,面向对象的三大特征:封装、继承、多态
|
5月前
|
Python
面向对象详解,面向对象的三大特征:封装、继承、多态-1
面向对象详解,面向对象的三大特征:封装、继承、多态
|
5月前
面向对象三大特征——封装,继承
面向对象三大特征——封装,继承
|
Java
面向对象的特征二:继承性
面向对象的特征二:继承性
116 0
|
存储 Java
Java面向对象的特征一:封装性
Java面向对象的特征一:封装性
74 0
|
11月前
|
C++
C++ 面向对象特征4 多态(Polymorphism)
C++ 面向对象特征4 多态(Polymorphism)
44 0