JAVA中的多层继承.doc

上传人:re****.1 文档编号:544027644 上传时间:2023-05-08 格式:DOC 页数:10 大小:814.51KB
返回 下载 相关 举报
JAVA中的多层继承.doc_第1页
第1页 / 共10页
JAVA中的多层继承.doc_第2页
第2页 / 共10页
JAVA中的多层继承.doc_第3页
第3页 / 共10页
JAVA中的多层继承.doc_第4页
第4页 / 共10页
JAVA中的多层继承.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《JAVA中的多层继承.doc》由会员分享,可在线阅读,更多相关《JAVA中的多层继承.doc(10页珍藏版)》请在金锄头文库上搜索。

1、继承的基本实现类的继承格式在JAVA中使用extends关键字完成类的继承关系,操作格式:class 父类 /定义父类class 子类 extends 父类/使用extends关键字实现继承继承:子类继承父类,可以扩展已有的功能.Extends关键字:称为扩展,子类扩展一个类,子类有时候也称为派生类。继承的限制:在JAVA中只允许单继承,不能使用多重继承,即:一个子类只能继承一个父类,但是允许进行多层继承,即:一个子类可以有一个父类,一个父类还可以有一个父类。继承的关系表示图:访问限制:在使用继承的时候要注意:子类是不能直接访问父类中的私有成员的,但是子类可以调用父类中的非私有化方法,但是不能

2、直接调用父类中的私有成员。继承的进一步研究:子类对象的实例化过程在继承的操作中,对于子类对象的实例化也是有要求的:子类对象在实例化前必须首先调用父类中的构造方法之后再调用子类自己的构造方法:public class Testpublic 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

3、 is:+st.getAge()+,school is:+st.getSchool();class Personprivate String name;private int age;public Person()System.out.println(supers constractor method);public void setName(String name)this.name=name;public void setAge(int age)this.age=age;public String getName()return name;public int getAge()return

4、 age;class Students extends Personprivate String school;public Students()System.out.println(the sons constractor mehod);public void setSchool(String school)this.school=school;public String getSchool()return school;实际上,此时,对于子类的构造方法中,隐藏了一个“super”的语句,有时也将父类称为超类。class Students extends Personprivate Stri

5、ng school;public Students()super();/默认隐藏System.out.println(the sons constractor mehod);public void setSchool(String school)this.school=school;public String getSchool()return school;方法的覆写:在继承的关系中也存在着方法覆写的概念,所谓的方法覆写就是指子类定义了与父类中同名的方法,但是在方法覆写时必须考虑到权限,即:被子类覆写的方法不能拥有比父类方法更加严格的访问权限。已学过的三种访问权限:privatedefaul

6、tpublicpublic class Testpublic 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 Personprivate String name;p

7、rivate int age;public Person()System.out.println(supers constractor method);public void setName(String name)this.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 Pe

8、rsonprivate String school;public Students()super();/默认隐藏System.out.println(the sons constractor mehod);public void setSchool(String school)this.school=school;public String getSchool()return school;public void print()/子类覆写父类的方法System.out.println(=extends=);从之前的正确操作中可以发现,如果现在子类将父类的方法覆写了,调用的时候肯定是调用了被覆写

9、的方法,那么如果现在非要调用父类的方法该怎么办呢?-通过super关键字就可以完成功能,super关键字可以从子类访问父类中的内容。如果要访问被覆写的方法:super.方法;public void print()/子类覆写父类的方法super.print();/申明调用父类的方法,不一定放在首句,也可以放在下面System.out.println(=extends=);如果要使用super不一定非要在方法覆写之后使用,也可以明确的表示某个方法是从父类中继承而来的,使用super只是更加明确的说,要从父类中查找,就不从子类中找了。问题:如果现在在父类中使用private关键字什么申明了一个方法,

10、那么在子类中使用default权限算是扩大权限吗?否。此时并没有被覆写,而是相当于在子类中又重新定义了一个新的方法出来。属性的覆盖方法的覆写有很多要求,属性的覆盖,主要是指在子类中申明了与父类同名的属性。但是此概念意义不大,很少使用。public class Person public static void main(String args) Students st=new Students();System.out.print(st.name);class stpublic String name=xzl;class Students extends stpublic String nam

11、e=mark;方法的重载(overloading)与覆写(overriding)的区别:Super关键字Super表示的是从子类调用父类中的指定操作,例如:调用属性、方法、构造等。因为在子类实例化的时候会默认调用父类中的无参构造,如果现在希望调用有参构造,则必须在子类中明确的申明。public class Testpublic static void main(String args)Students st=new Students(zhangsan,30,sichuan agriculture university);System.out.print(st.getInfo();class P

12、ersonprivate String name;private int age;public Person(String name,int age)this.setName(name);this.setAge(age);public void setName(String name)this.name=name;public void setAge(int age)this.age=age;public String getName()return name;public int getAge()return age;public String getInfo()return this.ge

13、tName()+this.getAge();class Students extends Personprivate String school;public Students(String name,int age,String school)super(name,age);/必须申明,因为是有参构造,这里如果不申明,则会出现编译错误this.school=school;public void setSchool(String school)this.school=school;public String getSchool()return school;public String getInfo()return super.getInfo()+this.getSchool();不管任何时候,子类实例化的时候永远要先去调用父类中的构造方法,默认调用的是无参构造。this与super的区别:对于this和super本身都可以调用构造方法,而且调用的时候必须放在构造方法的首行,所以这两个关键字肯定不能同时出现。实例:定义一个整形数组类,要求包含构造方法,增加数据及输出数据成员方法,并利用数组实现动态内存分配。在此基础上定义出以下

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号