JAVA继承的综合写法

在笔者理解中,继承可以提高代码的复用性,多个相同的成员可以放在同一个类中;也能提高代码的维护性,如果方法的代码需要修改,修改一个地方即可。在这里笔者在道例题中用到了无参构造,有参构造,封装,super关键字,为何要使用super关键字?是因为Animal这个父类中的年龄和名字是private私有的修饰符,因此就有参构造就不能调用到父类的属性,但是在Animal这个父类中定义了有参构造,因此子类就能通过super关键字来调用到父类的属性,这道综合的继承例题中有参构造让笔者头疼了一会,不知道怎样调到父类的属性,后面才用super关键字实现。

举例:猫,狗,用继承来实现:

猫:

行为(方法):

抓老鼠

狗:

行为(方法):

看门

共性(父类):

名字,年龄

--------------------------------------------------------------------------------------------------------------------------

Cat类:

package com.JC;

public class Cat extends Animal{
    public Cat(){}
    public Cat(String name,int age){
        super(name,age);
    }
    public void grab(){
        System.out.println(getName()+"老鼠爱大米,我爱抓老鼠");
    }
}

Dog类:

package com.JC;

public class Dog extends Animal{
    public Dog(){}
    public Dog(String name,int age){
        super(name,age);
    }
    public void watch(){
        System.out.println(getName()+"为主人看门,谁来谁死");
    }
}

 Animal(共性)

package com.JC;

public class Animal {
    private String name;
    private int age;

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

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if(age<0||age>20){
            System.out.println("年龄错误!!!!!");
        }else {
            this.age = age;
        }
    }

    public void introduce(){
        System.out.println("大家好,我是"+name+"今年"+age+"岁!");
    }
}

 测试类:

package com.JC;

public class AnimalTest {
    public static void main(String[] args) {
        System.out.println("狗的有参构造");
        Dog d1=new Dog("杰克",3);
        System.out.println(d1.getName()+d1.getAge());
        d1.watch();
        d1.introduce();
        System.out.println("----------------------------------");
        System.out.println("狗的无参构造");
        Dog d2=new Dog();
        d2.setName("约翰");
        d2.setAge(2);
        System.out.println(d2.getName()+d2.getAge());
        d2.watch();
        d2.introduce();
        System.out.println("------------------------------------");
        System.out.println("猫的有参构造");
        Cat c1=new Cat("汤姆",4);
        System.out.println(c1.getName()+c1.getAge());
        c1.grab();
        c1.introduce();
        System.out.println("--------------------------------------");
        System.out.println("猫的无参构造");
        Cat c2=new Cat();
        c2.setName("爱丽丝");
        c2.setAge(2);
        System.out.println(c2.getName()+c2.getAge());
        c2.grab();
        c2.introduce();

    }
}

运行结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值