• java笔记--动物:具体猫和狗以多态方式写出


    动物:猫和狗;

    1 在动物中类的下面写上 动物具有的两个属性, 1 名 2 重量;

    2 一个空的构造方法是必须紧跟其后的.再来一个构造方法,里面继承父类和继承本类;

    3 再把private的几个属性给get和set权限,使他们可以按方式调用和修改;

     1 package com.q1.q11;
     2 
     3 public class Animial {
     4     private String aname;
     5     private double weight;
     6     public Animial() {
     7     }
     8     
     9     public Animial(String aname, double weight) {
    10         super();
    11         this.aname = aname;
    12         this.weight = weight;
    13     }
    14     
    15     public void Dy() {
    16         System.out.println("这个动物的名字是:" + aname);
    17         System.out.println("这个动物的体重是:" + weight);
    18     }
    19 
    20     //get set
    21     public String getAname() {
    22         return aname;
    23     }
    24 
    25     public void setAname(String aname) {
    26         this.aname = aname;
    27     }
    28 
    29     public double getWeight() {
    30         return weight;
    31     }
    32 
    33     public void setWeight(double weight) {
    34         this.weight = weight;
    35     } 
    36     

    4  //我们要再建这个动物的具体类,再造一个cat and dog; 在新建的类中的超类(Superclass)这里,写上包的地址和

                      要继承的那个animal的类名:形式如com.q1.q11.Animial    点击确定直接建类

      4.1在 Cat 和Dog类下面 都可以再另写成员变量.  写上构造方法,空的和赋值的.再写一个一般方法打印出我们给的这几个属性.

        别忘了给这个类里新定义的成员变量给一个set 和get.

     1 package com.q1.q11;
     2 
     3 public class Cat extends Animial {
     4     //类里面也有成员变量,下面写构造方法
     5    private String size;
     6    public Cat () {
     7    }
     8    public Cat (String aname, double weight, String size) {
     9        super(aname,weight);
    10        this.size = size;
    11    }
    12    public void Dy() {
    13         System.out.println("this猫的名字是:" + super.getAname());
    14         System.out.println("这只猫的体重是:" + super.getWeight());
    15         System.out.println("这只猫咪的型号是:" + size);
    16     }
    17    //给size 生成get set方法.大小写必须写对
    18 public String getSize() {
    19     return size;
    20 }
    21 public void setSize(String size) {
    22     this.size = size;
    23 }
    24    
    25 }

    Dog中写的框架也是一样的,如下

     1 package com.q1.q11;
     2 
     3 public class Dog extends Animial {
     4     
     5     private String size;
     6     
     7        public Dog () {
     8        }
     9        public Dog (String aname, double weight, String size) {
    10            super(aname,weight);
    11            this.size = size;
    12        }
    13        public void Dy() {
    14             System.out.println("狗狗的名字是:" + super.getAname());
    15             System.out.println("狗狗的体重是:" + super.getWeight());
    16             System.out.println("这只狗狗的型号是:" + size);
    17         }
    18     public String getSize() {
    19         return size;
    20     }
    21     public void setSize(String size) {
    22         this.size = size;
    23     }
    24       
    25 
    26 }

    main方法按下面这样就可以调用出来了,但每次只能调用一个,或者可以把每个子类的调用都写出来.

     但 如果动物这个类下面的子类写了好多小动物呢?所以还可以采用多态的方法,

    如下下面:

     1 package com.q1.q11;
     2 
     3 public class Main {
     4 
     5     public static void main(String[] args) {
     6         Animial ani = new Cat();//父类的引用指向子类对象
     7         ani.setAname("可爱滴猫咪");
     8         ani.setWeight(35);  
     9         //上面这种 点 调用不出来子类里面自己写的属性,
    10         //只能调用父类的属性,想要调用就强转(如下)
    11         ani.Dy();
    12         Cat cater = (Cat)ani;
    13         cater.setSize("中型");
    14         cater.Dy();
          }
        }

    多态方法:

    main 中

    package com.q1.q11;
    
    public class Main {
    
        public static void main(String[] args) {
                Cat cater  = new Cat ("可爱猫咪",40,"中小型");
            Dog doger  = new Dog("帅气的犬",50,"中型");
            
            Test t = new Test();
            t.DIX(doger);
            t.DIX(cater);
    
        }
    
    }    

    再新建的一个Test中写:  

     

     1 package com.q1.q11;
     2 
     3 public class Test {
     4     
     5     public void  DIX( Animial ani) {
     6         if(ani instanceof Cat) {
     7             Cat kk = (Cat)ani;   //如果传过来的动物的某个对象是猫类,就把它强转为猫这个类;
     8             kk.Dy();
     9         }else if(ani instanceof Dog) {
    10             Dog dd = (Dog)ani;   //如果传过来的动物的某个对象是狗类,就把它强转为狗这个类;
    11             dd.Dy();
    12         }else {
    13             ani.Dy();   //其他的则调用动物这个对象本身的方法来显示
    14         }
    15         
    16     } 
    17 }
  • 相关阅读:
    子类继承和调用父类的构造方法 (转)
    数组复制 System.arraycopy 与 Arrays.copyof()
    ArrayList的使用方法 (转)
    Eclipse 的debug 用法 (转)
    for each
    二维数组 排序 随机数 练习
    react 之 reflux 填坑
    react & vue 项目创建的方式
    数组实例的 copyWithin()
    es6的正则扩展笔记之修饰符
  • 原文地址:https://www.cnblogs.com/ziyanxiaozhu/p/7868415.html
Copyright © 2020-2023  润新知