java-继承

继承


• 继承概要

Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力

继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类B为A的派生类或子类。

继承的好处:

体现代码的可复用行、扩展性。

 

• 代码演示:

Dog狗

/***/
blic class Dog {
/**名称*/
public String name;
/**颜色*/
public String color;
/**价格*/
public double price;

/**显示信息*/
public void show(){
    System.out.println("名称:"+name+",颜色:"+color);
}
}   

Cat猫

/***/
public class Cat {
    /**名称*/
public String name;
/**颜色*/
public String color;
/**重量*/
public double weight;

/**显示信息*/
public void show(){
    System.out.println("名称:"+name+",颜色:"+color);
}
}

zoo动物园

/**动物园*/
public class Zoo {

public static void main(String[] args) {
    Dog dog=new Dog();
    dog.name="吉娃娃狗";
    dog.color="绿色";
    dog.price=19800.7;
    dog.show();

    Cat cat=new Cat();
    cat.name="波斯猫";
    cat.color="红色";
    cat.weight=18.5;
    cat.show();

}
}   
运行结果:

  上面的代码实现了基本功能,但有问题,主要是:name,color,show重复,如果系统中的动物类再增加将不停的重复,重复就会带来不便修改,不便维护的问题。

•实现继承

要解决上面的问题可以使用继承,达到代码复用的目的。

Animal动物 :

package com.demo.test3;
/*动物*/
public class Animal {
    public String name;  //名称
    public String color; //颜色
    
    //显示信息
    public void show(){
        System.out.println("名称:"+name+",颜色:"+color);
    }
}

Dog狗:

package com.demo.test3;
//狗继承动物
public class Dog extends Animal {
    public double price; //价格
}

Cat猫:

package com.demo.test3;

public class Cat extends Animal {
public double weight; //体重
}

 

Zoo动物园:

package com.demo.test3;

public class Zoo {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.name="吉娃娃";
        dog.color="绿色";
        dog.price=144.1;
        dog.show();
        
        Cat cat = new Cat();
        cat.name="波斯猫";
        cat.color="红色";
        cat.weight=10.5;
        cat.show();
    }
}

    从示例中可见dog并没有定义color属性,但在使用中可以调用,是因为dog继承了父类Animal,父类的非私有成员将被子类继承。如果再定义其它的动物类则无须再反复定义name,color与show方法。

•Java继承的特征

1.传递性

  若类C继承类B,类B继承类A(多继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。

2.单根性

  若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。

3.子类调用父类成员

  a.使用super关键字调用父类成员

  b.子类默认会先调用父类的无参构造方法,如果父没有则报错,可以手动指定,但必须在第一行

实例:

Animal :

package com.demo.test4;
//动物
public class Animal {
    public String name;  //名称
    public String color; //颜色
    
    public Animal(){
        System.out.println("这是动物类你空构造方法");
    }
    
    public Animal(String name,String color){
        this.name = name;
        this.color = color;
    }
    
    //显示信息
    public void show(){
        System.out.println("名称:"+name+",颜色:"+color);
    }

}

Dog  :

package com.demo.test4;

public class Dog extends Animal {
    public Dog(String name,String color,double price) {
        super(name,color); //调用父类构造方法
        this.price=price; //调用当前对象的成员
    }
    
    public double price; //价格
    //重写父类方法
    public void show(){
        super.show();  //子类调用父类方法
        System.out.println("价格:"+this.price);
    }
}

Cat: :

package com.demo.test4;
//
public class Cat extends Animal{
    public double weight;
}

Zoo :

package com.demo.test4;

public class Zoo {
    public static void main(String[] args) {
        Dog dog = new Dog("中华田园犬","蓝色",123.56);
        dog.show();
        
        Cat cat = new Cat();
        cat.name = "波斯猫";
        cat.color = "红色";
        cat.weight = 18.5;
        cat.show();
    }    
}

 

转载于:https://www.cnblogs.com/sacai/p/11122355.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值