面向对象特征三:多态性

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

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

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("女人窈窕的走路");
  }
}
相关文章
|
6月前
|
存储 Cloud Native Linux
C++ 面向对象三大特征
C++ 面向对象三大特征
|
8月前
|
Java
面向对象编程的三大特征:封装;继承;多态
面向对象编程的三大特征:封装;继承;多态
44 0
|
9月前
|
Java
面向对象的特征二:继承性
面向对象的特征二:继承性
94 0
|
9月前
|
存储 Java
Java面向对象的特征一:封装性
Java面向对象的特征一:封装性
47 0
|
10月前
面向对象的三大特征(3)-多态
面向对象的三大特征(3)-多态
49 0
|
5月前
|
C++
C++ 面向对象特征4 多态(Polymorphism)
C++ 面向对象特征4 多态(Polymorphism)
28 0
|
9月前
|
Java
Java面向对象 特征三(多态性)详解
Java面向对象 特征三(多态性)详解
57 0
|
9月前
|
Java
Java面向对象 特征二(继承性)详解
Java面向对象 特征二(继承性)详解
44 0
|
10月前
|
存储 Java 开发者
Java面向对象编程三大特征 - 多态
Java面向对象编程三大特征 - 多态
75 0
|
10月前
|
Java 数据安全/隐私保护
Java面向对象编程三大特征 - 继承
Java面向对象编程三大特征 - 继承
42 0