JAVA中的多层继承
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
继承的基本实现
类的继承格式
在JAVA中使用extends关键字完成类的继承关系,操作格式:
·class 父类{} //定义父类
·class 子类extends 父类{} //使用extends关键字实现继承
继承:子类继承父类,可以扩展已有的功能.
Extends关键字:称为扩展,子类扩展一个类,子类有时候也称为派生类。
继承的限制:
在JAVA中只允许单继承,不能使用多重继承,即:一个子类只能继承一个父类,但是允许进行多层继承,即:一个子类可以有一个父类,一个父类还可以有一个父类。
继承的关系表示图:
访问限制:
在使用继承的时候要注意:子类是不能直接访问父类中的私有成员的,但是子类可以调用父类中的非私有化方法,但是不能直接调用父类中的私有成员。
继承的进一步研究:
子类对象的实例化过程
在继承的操作中,对于子类对象的实例化也是有要求的:子类对象在实例化前必须首先调用父类中的构造方法之后再调用子类自己的构造方法:
public class Test{
public static void main(String args[]){
Students st=new Students();
st.setName("zhangsan");
st.setAge(30);
st.setSchool("sichuan agriculture university");
System.out.println("name is:"+st.getName()+",age is:"+st.getAge()+",school is:"+st.getSchool());
}
}
class Person{
private String name;
private int age;
public Person(){
System.out.println("super's constractor method");
}
public void setName(String name){
=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
class Students extends Person{
private String school;
public Students(){
System.out.println("the son's constractor mehod");
}
public void setSchool(String school){
this.school=school;
}
public String getSchool(){
return school;
}
}
实际上,此时,对于子类的构造方法中,隐藏了一个“super”的语句,有时也将父类称为超类。
class Students extends Person{
private String school;
public Students(){
super();//默认隐藏
System.out.println("the son's constractor mehod");
}
public void setSchool(String school){
this.school=school;
}
public String getSchool(){
return school;
}
}
方法的覆写:
在继承的关系中也存在着方法覆写的概念,所谓的方法覆写就是指子类定义了与父类中同名的方法,但是在方法覆写时必须考虑到权限,即:被子类覆写的方法不能拥有比父类方法更加严格的访问权限。
已学过的三种访问权限:
·private public class Test{ public static void main(String args[]){ Students st=new Students(); st.setName("zhangsan"); st.setAge(30); st.setSchool("sichuan agriculture university"); System.out.println("name is:"+st.getName()+",age is:"+st.getAge()+",school is:"+st.getSchool()); st.print(); } } class Person{ private String name; private int age; public Person(){ System.out.println("super's constractor method"); } public void setName(String name){ =name; } public void setAge(int age){ this.age=age; } public String getName(){ return name; } public int getAge(){ return age; } void print(){//父类中的方法 System.out.println("=====super====="); } } class Students extends Person{ private String school; public Students(){