JAVA中的多层继承.doc_第1页
JAVA中的多层继承.doc_第2页
JAVA中的多层继承.doc_第3页
JAVA中的多层继承.doc_第4页
JAVA中的多层继承.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

继承的基本实现类的继承格式在JAVA中使用extends关键字完成类的继承关系,操作格式:class 父类 /定义父类class 子类 extends 父类/使用extends关键字实现继承继承:子类继承父类,可以扩展已有的功能.Extends关键字:称为扩展,子类扩展一个类,子类有时候也称为派生类。继承的限制:在JAVA中只允许单继承,不能使用多重继承,即:一个子类只能继承一个父类,但是允许进行多层继承,即:一个子类可以有一个父类,一个父类还可以有一个父类。继承的关系表示图:访问限制:在使用继承的时候要注意:子类是不能直接访问父类中的私有成员的,但是子类可以调用父类中的非私有化方法,但是不能直接调用父类中的私有成员。继承的进一步研究:子类对象的实例化过程在继承的操作中,对于子类对象的实例化也是有要求的:子类对象在实例化前必须首先调用父类中的构造方法之后再调用子类自己的构造方法: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 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)=name;public void setAge(int age)this.age=age;public String getName()return name;public int getAge()return 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 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;方法的覆写:在继承的关系中也存在着方法覆写的概念,所谓的方法覆写就是指子类定义了与父类中同名的方法,但是在方法覆写时必须考虑到权限,即:被子类覆写的方法不能拥有比父类方法更加严格的访问权限。已学过的三种访问权限:privatedefaultpublicpublic 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;private int age;public Person()System.out.println(supers 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 Personprivate 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=);从之前的正确操作中可以发现,如果现在子类将父类的方法覆写了,调用的时候肯定是调用了被覆写的方法,那么如果现在非要调用父类的方法该怎么办呢?-通过super关键字就可以完成功能,super关键字可以从子类访问父类中的内容。如果要访问被覆写的方法:super.方法;public void print()/子类覆写父类的方法super.print();/申明调用父类的方法,不一定放在首句,也可以放在下面System.out.println(=extends=);如果要使用super不一定非要在方法覆写之后使用,也可以明确的表示某个方法是从父类中继承而来的,使用super只是更加明确的说,要从父类中查找,就不从子类中找了。问题:如果现在在父类中使用private关键字什么申明了一个方法,那么在子类中使用default权限算是扩大权限吗?否。此时并没有被覆写,而是相当于在子类中又重新定义了一个新的方法出来。属性的覆盖方法的覆写有很多要求,属性的覆盖,主要是指在子类中申明了与父类同名的属性。但是此概念意义不大,很少使用。public class Person public static void main(String args) Students st=new Students();System.out.print();class stpublic String name=xzl;class Students extends stpublic String name=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 Personprivate String name;private int age;public Person(String name,int age)this.setName(name);this.setAge(age);public void setName(String 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.getName()+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本身都可以调用构造方法,而且调用的时候必须放在构造方法的首行,所以这两个关键字肯定不能同时出现。实例:定义一个整形数组类,要求包含构造方法,增加数据及输出数据成员方法,并利用数组实现动态内存分配。在此基础上定义出以下子类:排序类-实现排序反转类-实现数据反向存放分析:实现的代码如下:public class Testpublic static void main(String args)/ReverseArray a=null;/申明反转/a=new ReverseArray(5);/开辟5个空间大小SortArray a=null;/申明排序a=new SortArray(5);System.out.print(a.add(23)+t);System.out.print(a.add(26)+t);System.out.print(a.add(28)+t);System.out.print(a.add(29)+t);System.out.print(a.add(21)+t);System.out.print(a.add(24)+t);print(a.getArray();public static void print(int i)for(int x=0;x0)this.temp=new intlen;elsethis.temp=new int1;/最少维持空间是1public boolean add(int i)/增加元素if(this.footthis.temp.length)/还有空间this.tempfoot=i;/增加元素this.foot+;/修改角标return true;elsereturn false;public int getArray()return this.temp;class SortArray extends Array/排序类public SortArray(int len)super(len);public int getArray()/覆写方法java.util.Arrays.sort(super.getArray();/排序操作return su

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论