zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    POJ 2175 Evacuation Plan 费用流 负圈定理
    POJ 2983 Is the Information Reliable? 差分约束
    codeforces 420B Online Meeting
    POJ 3181 Dollar Dayz DP
    POJ Ant Counting DP
    POJ 1742 Coins DP 01背包
    中国儒学史
    产品思维30讲
    Java多线程编程核心技术
    编写高质量代码:改善Java程序的151个建议
  • 原文地址:https://www.cnblogs.com/ziyanxiaozhu/p/7868415.html
Copyright © 2011-2022 走看看