• 多态(三)


    1.多态
      1.1多态:一种事物的多种形态
      1.2多态的表现
        行为(方法)多态:重写和重载
        引用多态(动态绑定):编译时的类型和运行时的类型不一致的这种现象叫动态绑定
          eg:父类=子类 Pet p=new Dog();
      1.3向上转型和向下转型
        向上转型:父类=子类
          eg:Pet p=new Dog();
        向下转型:子类=(子类)父类
          eg:Dog d=(Dog)p;
        注意:java.lang.ClassCastException:类型转换异常
          父类的运行时类型跟要转成子类的类型的不一致
        注意:引用多态存在继承关系


    2.instanceof
      语法:对象A instanceof 类型B
        判断对象A的类型是否是类型B,如果是就返回true,否则返回false
        eg:d instanceof Dog


    3.实现多态的两种形式
      a.使用父类作为方法形参实现多态
        eg:public void paly(Pet p){...};
      b.使用父类作为方法返回值实现多态
        eg:public Pet getPet(int type){...};

    运行结果:

     1 package Day10三;
     2 
     3 public class Dog extends Pet{
     4     private int strain;        //品种
     5     
     6     //语法:public 类名(参数列表){ }
     7     //构造方法(默认构造方法)
     8     public Dog(){
     9         
    10     }
    11     
    12     public void catchingFlyDisc(){
    13         System.out.println("--接飞盘--");
    14         
    15         //健康值-10
    16         int health=getHealth();
    17         health=health-10;
    18         setHealth(health);
    19 
    20         //亲密度+5
    21         int love=getLove();
    22         love=love+5;
    23         setLove(love);
    24     }
    25     
    26     public void eat() {
    27         System.out.println("---吃狗粮---");
    28     }
    29     
    30     public void setStrain(int strain){
    31         this.strain=strain;
    32     }
    33     public int getStrain(){
    34         return strain;
    35     }
    36     
    37 }
    Dog类
     1 package Day10三;
     2 
     3 public class Penguin extends Pet {
     4     private String sex;            //性别
     5     //常量---变量
     6     public static final String SEX_MALE="Q仔";
     7     public static final String SEX_FEMALE="Q妹";
     8     public Penguin() {
     9 
    10     }
    11     
    12     public void swimming(){
    13         System.out.println("--游泳--");
    14         
    15         //健康值-10
    16         int health=getHealth();
    17         health=health-10;
    18         setHealth(health);
    19 
    20         //亲密度+5
    21         int love=getLove();
    22         love=love+5;
    23         setLove(love);
    24     }
    25     
    26     public void eat() {
    27         System.out.println("---吃鱼---");
    28     }
    29     public String getSex() {
    30         return sex;
    31     }
    32 
    33     public void setSex(String sex) {
    34         this.sex = sex;
    35     }
    36 }
    Penguin类
     1 package Day10三;
     2 /**
     3  * 父类
     4  * @author Administrator
     5  *
     6  */
     7 public abstract class Pet {
     8     private int age;                    //年龄
     9     private String name;                //昵称
    10     private int health=90;                    //健康值
    11     private int love=90;                    //亲密度
    12     public Pet() {
    13         
    14     }
    15     //打印信息
    16     public void print(){
    17         System.out.println("名字:"+this.name+",年龄:"+this.age+",健康值:"+this.health+",亲密度:"+this.love);
    18     }
    19     
    20     //抽象方法
    21     public abstract void eat();
    22     
    23     public int getAge() {
    24         return age;
    25     }
    26     public void setAge(int age) {
    27         this.age = age;
    28     }
    29     public String getName() {
    30         return name;
    31     }
    32     public void setName(String name) {
    33         this.name = name;
    34     }
    35     public int getHealth() {
    36         return health;
    37     }
    38     public void setHealth(int health) {
    39         this.health = health;
    40     }
    41     public int getLove() {
    42         return love;
    43     }
    44     public void setLove(int love) {
    45         this.love = love;
    46     }
    47     
    48 }
    父类
     1 package Day10三;
     2 
     3 public class Test {
     4 
     5     public static void main(String[] args) {
     6         
     7         Dog d=new Dog();
     8         d.setName("灰灰");
     9         
    10         Penguin p=new Penguin();
    11         p.setName("白白");
    12         
    13         Pet pet=d;    //父类=子类
    14         System.out.println(pet.getName());
    15         
    16         pet=p;        //父类=子类
    17         System.out.println(pet.getName());
    18         
    19     }
    20 
    21 }
    测试类
  • 相关阅读:
    GF4 Beta 冲刺Scrum meeting2
    GF4 Beta 冲刺Scrum meeting1
    GF4 实验九 团队作业6:团队项目编码&ALPHA冲刺
    GF4 实验九 【Alpha】Scrum Meeting 7
    GF4 实验九 【Alpha】Scrum Meeting 6
    GF4 实验九 【Alpha】Scrum Meeting 5
    GF4 实验九 【Alpha】Scrum Meeting 4
    docker安装jenkins
    docker安装svn
    idea添加web项目报404问题
  • 原文地址:https://www.cnblogs.com/yang82/p/7045272.html
Copyright © 2020-2023  润新知