在现实生活中,有许多的同一类的事物中还可以具体的分为更细致的类,如计算机可以再分为台式电脑,笔记本电脑,平板电脑;车可以分为公交车,私家车,大货车;可以发现后者都是在继承前者的一些基本功能上有所扩展再有所区分。这个现象映射到JAVA编程运用中是怎样的?
譬如我们建了一个叫Computer的类,并给了它品牌名称brand与内存大小memory的属性,最后再给它一个叫setBrand的方法。而当我们在建Laptop的类与Ipad的类时,我们就可以不要再给它声明 品牌与内存的属性以及定义setBrand方法,而是直接去继承Computer中的属性与方法,这样在编写大型的程序的时候,我们就可以根据一些类的相关性,通过继承来大幅减少我们的工作量,提高了代码的复用性。
Java继承的关键字:extends
格式如下
public class 类名(子类) extends 类名(父类) {
}
下面给出一个具体的例子;
//定义一个Computer的类,它包含brand的与memory属性以及开机方法
public class Computer{
String brand;
int memory;
public void setBrand(String brand){
this.brand=brand;
}
}
public class Laptop extends Computer{
public static void main(String args[]){
Laptop lap=new Laptop();//通过Laptop的默认构造方法创建一个lap对象
System.out.println(lap.brand); //对象lap继承了父类Computer的属性brand
lap.setBrand("联想"); //对象lap继承了父类Computer的方法setBrand
System.out,println(lap.brand)
}
}
可以发现,子类继承了父类的所有属性与方法(访问修饰符为非private),但是它并没有继承了父类的构造方法,上述例子中Laptop的构造方法是系统默认自带的无参构造方法而非继承自父类。还有,一个类只能继承一个父类。
当然继承了父类的子类还应有其扩展型这样才能符合现实的情况,比如Laptop可能需要添加电池容量battery的属性及冲电的方法charging。这就是其扩展的表现