@Java中有关继承的操作以及关键字extends和super的使用
继承
继承可是Java中的一必不可少的一项重要的环节,
我们都知道我们见到的项目一般都会有继承。
因为使用继承可以提高代码的重用性。接下来我们来讲一下何为继承。
继承的概念
继承的概念:子类继承父类发的属性和方法。父类只有一个,子类可以有很多个。
首先我们先来了解什么是父类?什么是子类?
父类就是拥有众多子类有交集的特征的类(子类的交集),
子类有父类所没有的特征。
这里可以看到父类和子类都有数字性质的特征,但是子类比父类多了运算特征,除了继承的属性和方法,还允许子类扩展自身的属性和方法。
所以子类虽然源于父类,但比父类更加完善。
因此子类继承父类的方法和属性可以提高代码的重用性,建立类与类之间的关系(多态的前提)。
关键字extends和super
我们在子类继承父类的时候需要使用关键字extends,我们来看一下使用语法。
【修饰符】class 子类名 extends 父类名{
//子类拥有父类的属性和方法
}
关键字super有两种用法,
第一种,当子类的属性和重写的方法覆盖了父类继承的属性和方法,
那么在子类中直接访问的是子类的属性和重写的方法。
如果想要在子类中,
访问被覆盖的父类属性和方法,使用super来访问:
***super.父类属性名***
***super.父类方法名(..)***
第二种,我们构建子类对象时,会先调用父类构造器添加继承的属性和方法,
然后在调用子类构造器添加扩展的属性和方法、以及重写的方法。
我们调用的是哪个父类构造器呢?默认是父类无参构造器。
我们也可以指定调用父类的哪个构造器,使用super(实参)指定,
这句话必须是子类构造器方法体中的第一句话。
通过例子我们可以形象地看到,一个父类可以被多个子类继承,
但一个子类只能有一个父类。在继承时我们使用的是**extends**关键字。
继承范围
子类只能继承父类的属性和方法(重要的事情说三遍),不能继承继承构造器。
同包下,子类继承父类的非私有属性和方法。
不同包下,子类可以继承父类共有的和受保护的属性和方法。
方法重写
如果继承的父类方法无法满足子类的需求,
那么可以在子类中对该方法重新定义,这叫方法的重写。
重写规则为:
方法名相同,参数相同,返回值类型相同,访问修饰符范围》=父类的范围。