继承的基本概念
现在假设一个Person类,其中包括name和age两个属性,而另外一个Student类,需要包含name和age、school属性。代码如下:
【Person类】
class Person
{
private String name;
private int age;
public String getName(){
return name;
}
public void setNmae(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
}
【Student类】
class Student
{
private String name;
private int age;
private String school;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
public void setSchool(String school){
this.age=age;
}
public String getSchool(){
return school;
}
}
从上面的代码可以发现Person类中已经有了name和age两个属性及对应的setter和getter方法,而且Person和Student也属于有关系的类。因为一个学生肯定是一个人。所以现在希望可以不用在Student类中再重新声明这两个属性及对应的setter和getter方法,这时就溢出了继承的概念。
在Java中要实现继承类,可以直接使用以下语句来表示:
【类的继承格式】
*class 父类{} //定义父类
class 子类 exteds 父类{} //使用extends关键字实现继承*
下面来进行继承的操作:
class Person
{
private String name;
private int age;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
}
class Student extends Person
{
private String school;
public void setSchool(String school){
this.school=school;
}
public String getSchool(){
return school;
}
}
public class ExtDemo2
{
public static void main(String args[]){
Student stu=new Student();
stu.setName("张三");
stu.setAge(19);
stu.setSchool("ZZU");
System.out.println("姓名:"+stu.getName()+",年龄:"+stu.getAge()+",学校:"+stu.getSchool());
}
}
运行结果为:
从运行结果可以发现,在Student类中并没有定义name和age的相关方法属性,但是通过继承的功能把父类的操作拿到了子类中使用,而且在子类中我们又增加了school属性及其相关的属性和方法。从而扩充了Person类。
需要注意的是,Java中只允许多层继承,不允许多重继承。即Java中只能单继承,即一个子类只能继承一个父类。但是允许进行多层继承,即一个子类可以有一个父类,一个父类还可以有另一个父类。
在使用继承时应注意的是:子类是不能直接访问父类中的私有成员变量的,子类可以调用父类中的非私有方法,但是不能直接调用父类中的私有成员。,但是可以通过setter和getter方法调用,进行访问。