java-继承

Posted sacai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
        

 

以上是关于java-继承的主要内容,如果未能解决你的问题,请参考以下文章

Java_继承

java中为啥要使用继承

继承问题java

Java继承概述 以及Java继承案例和继承的好处

java.lang里面的类都有哪些可以被继承?

Java 中 Enum 如何继承?