继承的概述:

继承是面向对象程序设计的一个重 要特征,它是通过继承原有类派生出的子类进而松构造出更为复杂的子类。子类既有新定义的行为特征,又继承了原有类的行为特征。

在这个五彩缤纷的世界中,继承的案例随处可见。老虎、狮子、熊猫、狠,所以它们都被称为车。
所以它们都是动物:小汽车、货车、公共汽车,它们都具有车的基本特征管为子类:将车视为父类,而货车、综上所述,可以将动物视为父类,而老虎、狮子、熊猫、狼是动物的种,可以称其为子类;将车视为父类,而货车、小汽车、公共汽车是车的一种,可以称其为子类

分析现实生活中的例子可知,父类与子类存在着包含与被包含的关系,是一种is-a 的关系,可以说车包含小汽车、货车、公共汽车,也可以说小汽车、货车、公共汽车都是车的一种。我们可以更进一步这样认为: 父类更为通用,子类更为具体。子类除了可以沿用父类的特征和行为外,还可以定义自己的一些特殊特征与行为。

在Java中继承可以在现有类的基础上进行功能的扩展,这样能够更加快速地开发出新类,使新类不仅可以复用当前类的特征和行为,而且还可以定义自己的特征和行为。通过继承可大幅度地提高代码的复用性,减少代码量,便于程序的后期维护。

Java的继承使用extends关键字实现,实现继承的类称为子类,被继承的类称为父类,也被称为基类、超类。父类和子类的关系,是一般和特殊的关系,如水果和苹果的关系,苹果继承水果,苹果是水果的子类,则苹果是-种特殊的水果。
Java的继承语法格式如下:

[修饰符]class子类名[extends 父类名]{


//类定义部分

        }

在使用继承特性时,需要注意的是,子类可以继承父类中访问权限为public、protectde、default的成员变量和方法。

继承的实现

有圣剑(Sword)、长矛(Spear)两个武器类,其要求如下,
Sword类的属性:武器名(name)、攻击值(attackValue);方法:攻击(attack)。Spear类的属性:武器名(name)、攻击值(attackValue) ;方法:攻击(attack)。分析下面的程序代码:

(1)创建Sword类,代码如下:

public class Sword {
        String name;

            //武器名

int attackValue;

//攻击值

//构造方法

public Sword(String name, int attackValue) {
        this.name = name;



this .attackValue = attackValue;

}

//攻击方法

public void attack(){

System.out printIn("武器名: +name+"\t"+"攻击值:"+attackValue);
    

    }
}

(2)创建Spear类,代码如下:

public class Spear {


        String name;

//武器名

        int attackValue;

//攻击值

//构造方法

public Spear(String name, int attackValue) {


        this.name = name;

        this .attackValue = attackValue;

//攻击方法

        public void attack(){



                System. out. printIn("武器名:" +name+"\t"+"攻击值:" +attackValue);
                    
                    }
            }

上面的两个类中存在大量的重复代码,不能实现代码的复用,同时不易于程序的扩展。如果将1码抽取出来,建立一个公共类,提供给其他类复用,这样会大量减少重复代码,实现代码的复复用的方式来实现

具体操作见示例

(1)创建父类武器库(Weapon),代码如下:

public class Weapon {
String name;
int attackValue;

/构造方法

public Weapon(String name, int attackValue) {

System.out.printn('"--执行武器父类Weapon的构造方法-- ");

this.name = name;

this. attackValue = attackValue;



public void attack()l

System out pintntln("武器名"+neme+"\t"+"攻击值"+attackValue);


        }
    }

(2)创建子类圣剑类(Sword)
 

public class Sword extends Weapon{



pùblic Sword(String name, int attackValue){



    super(name, attackValue);
        

        }
            
     }

(3)创建子类长矛类( Spear),代码如下:

public class Spear extends Weapon{



    public Spear(String name,int attackValue){
    
    super(name, attackValue);

        }
        }

(4)创建测试类(ExtendsTest),代码如下:

public class ExtendsTest{


public static void main(String[] args){

Sword word = new Sword("圣剑",300);

word . attack();

Spear spear = new Spear(" 长矛 ",250);

spear.attack();
            }
            
        }