子类与父类之间的继承关系

在Java的使用过程中,我们不免会涉及到创建许多的类来实现不同的功能,但如果在每一个新类中用同一个功能时全部重写未免过于冗杂,于是就涉及到子类与父类的继承关系

以动物与宠物之间的关系为例,宠物属于包含在动物中的类,一些在“动物”中的使用方法同样也可以在“宠物”中使用,在代码中就涉及到了继承关系

//定义类
public class Animal {
    //属性
    private String kind;

    //方法
    public void setKind(String k){
        kind = k;
    }
    public String getKind(){
        return kind;
    }
    public void basic(){
        System.out.println(kind+"是动物");
    }
}

如图,我们首先定义“动物”类并写出一些基本的功能

//宠物类
public class Pet extends Animal{

    public void printKind(){
        System.out.println("动物:"+getKind());
    }

    public void basic(){
        //保留原有父类功能:调用父类方法
        //super 表示当前类的父类对象
        //this 表示本类对象
        super.basic();
        //自定义新功能
        System.out.println("子类继承父类方法!");
    }
}

然后我们在设计“宠物”类的时候,可以通过“extends”来实现子类对父类的继承,此时,在子类中可直接调用父类中的方法

注意!当子类与父类中的功能冲突时,会优先调用子类中的方法,若想实现父类的功能在子类中同时实现的时候,就需要使用“super”来表示父类中的功能;同理,“this”则代表本类中的功能

随后我们创立方法类并将主函数设置在这个类里

public class Mange {

    //函数
    public static void main(String[] args) {

        //自动转型(向上)B extends A => A = new B();
        Pet p = new Pet();
        p.setKind("老虎");
//        p.basic();
//
//        //自动转型后该对象只能调用子类中重写的方法
//        //强制转型(向下转型)
//        Pet pet = (Pet)p;
//        pet.printKind();

        Master m = new Master();
        m.feed(p);

    }
}

如图,使用了extends后会有自动转型(向上)的情况,即当B为A的子类,就可以直接创建一个在A类中的B对象,执行的是子类的功能。但会出现一些只存在于子类的方法不能使用,就需要强制转型(向下)

这时我们再定义一个“主人”类:

public class Master {
    public void feed(Animal an){
        an.basic();
    }
}

此时若要使用这个类中的方法,只需要创建一个新的对象,后把对象名写入即可

注意!这里即使“宠物”与“动物”数据类型不一样,只要“宠物”是“动物”的子类,就可以调用

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值