extends关键字主要解决的是代码的复用性问题
继承概念
在现实生活中,继承表示的意思是下一代人继承下一代人的财产,换一种理解方法就是上一代人的财产进行再“使用”。而java中继承也有这一特点
如上图,继承就是,当我们发现对象2拥有和对象1相同的变量和方法时,如果我们再去定义一遍就会十分麻烦。这时候我们可以只定义一个对象3,将对象3包含上述这些变量和方法,这样对象3就成为了一个父类,而对象1和2就是子类,相当于从父类那里“继承”了变量和方法,这里的变量和方法就相当于财产。
使用继承的优点也很明显,这样可以大量减少重复性代码,即提高了代码的复用性。
类的继承
格式:
public class A extends B {}
例子:
public class guanjianzi {
public static void main(String[] args) {
Zilei m = new Zilei();
m.test();
}
}
class Fulei{
String name = "Fulei";
}
class Zilei extends Fulei{
String name = "Zilei";
public void test(){
String name = "What";
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
}
输出结果:
What
Zilei
Fulei
- name输出的是离得最近的变量
- this.name输出的是成员变量
- super.name输出的是父类中的变量
接口的继承
概念:与父类相似的是,接口也可以通过extends关键字实现继承。继承父接口的子接口会获得父接口中定义的所有抽象方法和变量。需要注意的是,接口支持多重继承,即一个接口可以继承多个父接口。
格式:
interface 接口名 extends 接口列表{
全局变量声明;
抽象方法声明;
}
要么重写接口中的所有抽象方法(子类以及其继承的父类中的),要么是抽象类