继承(1)

继承的概念

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类具有父类的各种属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

继承特点

1)Java只支持单继承,不支持多继承。
2)Java支持多层继承(继承体系)
3)父类构造函数不能继承,父类的属性和方法都可以继承。
4)把多个类中的相同的属性和行为进行抽取,封装到一个类中,然后再建立新类的时候,不需要从头做起,继承刚才定义的那个类即可。
5)类与类之间要有所属( ” is a ” )关系,xx1是xx2的一种。
6)任何类都直接或者间接的继承自Object,但是没有显式化给出声明。

eg:如何验证?
因为继承后有父类的方法,则可以直接使用自己定义的类,调用object提供的方法
public String toString()

为什么需要继承

好处:
1)提高代码的复用性。
2)让类与类之间产生了一个关系,是多态的前提。

接下来我们通过实例来说明这个需求。
开发动物类,其中动物分别为猫以及狗,要求如下:

猫和狗继承了动物的属性name,通过有参构造函数进行属性传值
猫:属性(姓名),方法(叫)
狗:属性(姓名),方法(叫)

这里写图片描述

package com.yuhui.a7;

public class Animal {

    protected String name = "";

    protected int shoutNum = 5;

    //父类无参构造函数
    public Animal() {

        this.name = "无名";

    }

    //父类有参构造函数
    public Animal(String name) {

        this.name = name;

    }

    public int ShouNum(int num){

        if(num <= shoutNum ){
            return shoutNum = num;
        }else{
            return shoutNum;
        }

    }

    public String Shout(){

        StringBuffer result = new StringBuffer();

        for(int i= 0 ;i < shoutNum;i++  ){

            result.append(" , ");

        }

        return "我的名字叫"+name +"  "+ result;

    }

}
package com.yuhui.a7;

class Cat extends Animal{

    public Cat() {}

    public Cat(String name) {super.name = name;}

    //复写父类Shout()方法
    public String Shout(){

        StringBuffer result = new StringBuffer();

        for(int i= 0 ;i <shoutNum;i++  ){

            result.append(" , 喵");

        }

        return "我的名字叫"+name +"  "+ result;

    }

    public static void main(String[] args) {

        Cat cat = new Cat("小花猫");

        new Animal().shoutNum = 10;

        System.out.println(cat.Shout()); 

    }

}

执行结果 : 我的名字叫小花猫 , 喵 , 喵 , 喵 , 喵 , 喵

package com.yuhui.a7;

public class Dog extends Animal{

    public Dog() {}

    public Dog(String name) {super.name = name;}

    //复写父类Shout()方法
    public String Shout(){

        StringBuffer result = new StringBuffer();

        for(int i= 0 ;i <shoutNum;i++  ){

            result.append(" , 汪");

        }

        return "我的名字叫"+name +"  "+ result;

    }

    public static void main(String[] args) {

        Dog dog = new Dog("史路比");

        new Animal().shoutNum = 10;

        System.out.println(dog.Shout()); 

    }

}

执行结果:我的名字叫史路比 , 汪 , 汪 , 汪 , 汪 , 汪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京小辉

你的鼓舞将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值