面向对象:封装 继承 多态综合练习

//main入口函数
public class MainClass {
    public static void main(String[] args) {
        //new是Cat永远都是Cat类型,但若使用父类Animal接收的,那么就无法调用子类Cat的特有方法
        //想调用必须要强转:父类转子类
        Animal duoduo=new Cat("duoduo",10,"花色");
        Cat cc=new Cat("biubiu",2,"灰白");
        cc.say("miaomiao");
        Dog dd = new Dog("小狗",5,"黑色");
        dd.say("wangwang");

        //存cat和dog的数组的类型只能是Animal
        Animal[] a={duoduo,cc,dd};
        cc.catchMouse("不比较");
      //  Cat duoduo2=(Cat)duoduo;
     //   duoduo2.catchMouse("duoduo2");
                //若没有上面一行转型,则duoduo2不会有catchMouse()方法,尽管他是Cat类型

        for(Animal each:a){
            if (each instanceof Cat){//比较数组中元素类型是否为Cat
               Cat c1=(Cat)each;
               c1.catchMouse("Tom猫");
            }
        }

    }
}

//父类Animal

import javax.swing.*;
public class Animal {
    private  String name;
    private  int age;
    private  String color;

    public Animal(){};
    public Animal(String name,int age,String color){
        this.age = age;
        this.name = name;
        this.color = color;
    }

    public void say(String something){
        System.out.println(name+"的叫声是"+something);
    }
    @Override
    public String toString() {
        return "Animal{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", color='" + color + '\'' +
                '}';
    }

    public int getAge() {
        return age;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

//子类1:Cat类

public class Cat extends Animal{

    public  Cat(){}
    public Cat(String name,int age,String color){
        super(name, age, color);
    }


    public void catchMouse(String  name){
        System.out.println(name+"捉老鼠");
    }
}

//子类2:Dog

public class Dog extends  Animal{
    public  Dog(){}
    public Dog(String name,int age,String color){
        super(name, age, color);
    }
    public void waveTail(String name){
        System.out.println(name+"在摇尾巴");
    }
}

运行结果:

biubiu的叫声是miaomiao
小狗的叫声是wangwang
不比较捉老鼠
Tom猫捉老鼠
Tom猫捉老鼠

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值