zoukankan      html  css  js  c++  java
  • 多态之初认识

    Perosn父类

     1 package day1_26;
     2 
     3 public class Person {
     4     String name;
     5     int age;
     6     public void eat() {
     7         System.out.println("人,吃东西");
     8     }
     9 
    10     public void walk() {
    11         System.out.println("人,走路");
    12     }
    13 }

    Man子类

     1 package day1_26;
     2 
     3 public class Man extends Person {
     4     @Override
     5     public void eat() {
     6         System.out.println("男人,多吃肉长肌肉");
     7     }
     8 
     9     @Override
    10     public void walk() {
    11         System.out.println("男人,霸气走路");
    12     }
    13     public void earnMoney() {
    14         System.out.println("男人赚钱");
    15     }
    16 }

    PersonTest测试类

     1 package day1_26;
     2 
     3 /**
     4  * 多态是父类引用指向子类对象
     5  * 多态是对于方法而言,属性无关
     6  * 编译看左边(左边是父类,编译时看父类有没有这个方法,如果没有报错)
     7  * 运行看右边(右边是子类,运行时如果这个方法子类重写了父类的,
     8  * 那么就调用子类那个重写的方法)
     9  *
    10  */
    11 
    12 public class PersonTest {
    13     public static void main(String[] args) {
    14         Person p = new Person();
    15         p.eat();
    16         p.walk();
    17         //多态
    18         Person p2 = new Man();
    19         p2.eat();
    20         p2.walk();
    21         System.out.println("****************");
    22         //编译看左边,即编译时类型Person,没有earnMoney()方法,所以报错
    23         //p2.earnMoney();
    24         PersonTest pt = new PersonTest();
    25         pt.helloPerson(new Man()); //Person p = new Man()
    26         pt.helloPerson(new Person());//Person p = new Person()
    27 
    28         pt.helloObject(new Man()); //Object object = new Man()
    29         pt.helloObject(new Person());//Object object = new Person();
    30 
    31 
    32     }
    33 
    34     //形参是Person对象,那么调用方法时,可以放入Person对象或者其子类的对象
    35     public void helloPerson(Person p) {
    36         //因为walk方法被重写了,所以调用时,运行的是重写后的那个方法
    37         p.walk();
    38     }
    39 
    40     //形参是Object对象,那么调用方法时,可以放入Object对象或者其子类的对象
    41     public void helloObject(Object object) {
    42         //因为Perosn和Man都没有重写Object对象的方法,
    43         // 所以只能调用继承Object的方法,比如toString()。
    44         //编译看左边,左边是Object,它没有eat()方法,所以报错
    45         //object.eat();
    46         System.out.println(object.toString());
    47     }
    48 
    49 
    50 }
  • 相关阅读:
    笔记:多线程访问ConcurrentHashMap对key加锁
    根据第三列去重
    Correct the classpath of your application so that it contains a single, compatible version of org.apache.log4j.ConsoleAppender
    python 中将源配置为阿里
    criteria两个 判断
    git flow
    sqlmap用法详解
    MongoDB 入门
    MongoDB 手册
    OWASP TOP 10简单介绍
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14340187.html
Copyright © 2011-2022 走看看