JAVA开发与应用抽象类与接口及多态课件

上传人:94****0 文档编号:241293231 上传时间:2024-06-15 格式:PPT 页数:27 大小:171.68KB
返回 下载 相关 举报
JAVA开发与应用抽象类与接口及多态课件_第1页
第1页 / 共27页
JAVA开发与应用抽象类与接口及多态课件_第2页
第2页 / 共27页
JAVA开发与应用抽象类与接口及多态课件_第3页
第3页 / 共27页
点击查看更多>>
资源描述
抽象类与接口抽象类与接口1 1抽象方法和抽象类在类中没有方法体的方法,就是抽象方法。在类中没有方法体的方法,就是抽象方法。含有抽象方法的类,即为抽象类。含有抽象方法的类,即为抽象类。如果一个子类没有实现抽象基类中所有的抽象方如果一个子类没有实现抽象基类中所有的抽象方法,则子类也成为一个抽象类。法,则子类也成为一个抽象类。抽象类中可以没有抽象方法,但是有抽象方法的抽象类中可以没有抽象方法,但是有抽象方法的类必须是抽象类。类必须是抽象类。构造方法、静态方法、私有方法、构造方法、静态方法、私有方法、finalfinal方法不能方法不能被声明为抽象的方法。被声明为抽象的方法。抽象方法和抽象类在类中没有方法体的方法,就是抽象方法。2 2接口l l接口的概念是建立在封装的基础之上。在面向对象程接口的概念是建立在封装的基础之上。在面向对象程序设计中,封装是指对象的使用者通过预先定义的接序设计中,封装是指对象的使用者通过预先定义的接口关联到某一对象的服务和数据时,无需知道这些服口关联到某一对象的服务和数据时,无需知道这些服务是如何实现的。因此接口在面向对象程序设计中有务是如何实现的。因此接口在面向对象程序设计中有着重要的地位。着重要的地位。l l在在JavaJava中,抽象类和接口(中,抽象类和接口(InterfaceInterface)都是一种接口)都是一种接口抽象机制,符合接口的特点。习惯上我们只把抽象机制,符合接口的特点。习惯上我们只把JavaJava语语法中的接口(法中的接口(InterfaceInterface)作为接口的窄定义。该接口)作为接口的窄定义。该接口是一种类型,它定义了能被一个类实现的方法。是一种类型,它定义了能被一个类实现的方法。接口接口的概念是建立在封装的基础之上。在面向对象程序设计中3 3接口的概念接口是指一些方法特征的集合,它关心的是方法的特征接口是指一些方法特征的集合,它关心的是方法的特征定义(例如方法的名称、参数的类型及数量),而不是定义(例如方法的名称、参数的类型及数量),而不是方法的具体实现。在方法的具体实现。在JavaJava中,抽象类和接口都是一种接中,抽象类和接口都是一种接口抽象机制,符合接口的特点。口抽象机制,符合接口的特点。l l接口提供了一种抽象机制接口提供了一种抽象机制接口提供了一种抽象机制接口提供了一种抽象机制 l l接口使即插即用变得可能接口使即插即用变得可能接口使即插即用变得可能接口使即插即用变得可能 l l接口针对抽象而不是针对实现接口针对抽象而不是针对实现接口针对抽象而不是针对实现接口针对抽象而不是针对实现 接口的概念 接口是指一些方法特征的集合,它关心的是方法的特4 4Java接口1.1.定义接口定义接口定义接口定义接口2.2.实现接口实现接口实现接口实现接口3.3.接口与多重继承接口与多重继承接口与多重继承接口与多重继承 public interface 接口名接口名 extends 祖先接口名祖先接口名 返回返回类类型型 方法名方法名(参数列表参数列表);.类类型型 常量字段名常量字段名=值值;.public class 类类名名 extends 祖先祖先类类名名 implements 接口名接口名 ,其它接其它接口名口名./类类的的实现实现代代码码 .下面代码通过实现Writeable接口和Eatable接口的Paper类代码,演示了多重继承的程序设计:public class Paper implements Eatable,Writeable public void eat()System.out.println(撕纸吃,+TASTELESS);public void write()System.out.println(在纸上书写:);Java接口定义接口publicinterface5 5接口应用实例l l使用接口的好处是便于系统的扩展、维护和重用。使用接口的好处是便于系统的扩展、维护和重用。使用接口的好处是便于系统的扩展、维护和重用。使用接口的好处是便于系统的扩展、维护和重用。接口的使用使得代码模块之间的耦合减弱。具体表接口的使用使得代码模块之间的耦合减弱。具体表接口的使用使得代码模块之间的耦合减弱。具体表接口的使用使得代码模块之间的耦合减弱。具体表现在对象之间的依赖关系弱化为客户现在对象之间的依赖关系弱化为客户现在对象之间的依赖关系弱化为客户现在对象之间的依赖关系弱化为客户服务的关服务的关服务的关服务的关系,即客户对象请求服务,服务对象提供服务,而系,即客户对象请求服务,服务对象提供服务,而系,即客户对象请求服务,服务对象提供服务,而系,即客户对象请求服务,服务对象提供服务,而接口则成了提供服务的一种契约。接口则成了提供服务的一种契约。接口则成了提供服务的一种契约。接口则成了提供服务的一种契约。l l没有经验的程序员设计接口时通常会犯合并接口和没有经验的程序员设计接口时通常会犯合并接口和没有经验的程序员设计接口时通常会犯合并接口和没有经验的程序员设计接口时通常会犯合并接口和预留接口这两个错误。根据接口隔离法则,我们在预留接口这两个错误。根据接口隔离法则,我们在预留接口这两个错误。根据接口隔离法则,我们在预留接口这两个错误。根据接口隔离法则,我们在设计接口时不应该强迫客户端依赖于他们用不上的设计接口时不应该强迫客户端依赖于他们用不上的设计接口时不应该强迫客户端依赖于他们用不上的设计接口时不应该强迫客户端依赖于他们用不上的方法,而是应该提供职责明确、功能专一的最小化方法,而是应该提供职责明确、功能专一的最小化方法,而是应该提供职责明确、功能专一的最小化方法,而是应该提供职责明确、功能专一的最小化接口。除非必要,应该严格控制接口宽度,避免接接口。除非必要,应该严格控制接口宽度,避免接接口。除非必要,应该严格控制接口宽度,避免接接口。除非必要,应该严格控制接口宽度,避免接口冗余。口冗余。口冗余。口冗余。接口应用实例使用接口的好处是便于系统的扩展、维护和重用。接6 6接口接口中所有的方法都是publicabstract。在接口中声明方法时,不能使用native、static、final、synchronized、private、protected等修饰符。和public类一样,public接口也必须定义在与接口同名的文件中。接口接口中所有的方法都是publicabstract。7 7接口接口中可以有数据成员,这些成员默认都是publicstaticfinal。接口接口中可以有数据成员,这些成员默认都是publicst8 8Math.javainterface Mathdouble PI=3.1415926;class Arithmetic implements Mathdouble roundArea(double radius)return PI*radius*radius;class Studentpublic static void main(String args)Arithmetic a=new Arithmetic();System.out.println(a.roundArea(3);System.out.println(Math.PI);/okSystem.out.println(Arithmetic.PI);/okSystem.out.println(a.PI);/okMath.java9 9接口一个接口可以继承自另一个接口。Java中不允许类的多继承,但允许接口的多继承。接口一个接口可以继承自另一个接口。1010Sofa.javainterface Sittablevoid sit();interface Lievoid sleep();interface Chair extends Sittableinterface Sofa extends Sittable,LieSofa.java1111接口在Java中,一个类可以实现多个接口。一个类在继承另外一个类的同时,可以实现多个接口。接口在Java中,一个类可以实现多个接口。1212Sofa.java/实现多个接口interface Sittablevoid sit();interface Lievoid sleep();class Sofa implements Sittable,Liepublic void sit()public void sleep()Sofa.java1313Sofa.java/在继承类的同时,实现多个接口interface Sittablevoid sit();interface Lievoid sleep();interface HealthCarevoid massage();class Chair implements Sittablepublic void sit();class Sofa extends Chair implements Lie,HealthCarepublic void sleep();public void massage();Sofa.java1414多态的概念多态的概念多态是指在一棵继承树中的类可以有多个同名但不同方法多态是指在一棵继承树中的类可以有多个同名但不同方法多态是指在一棵继承树中的类可以有多个同名但不同方法多态是指在一棵继承树中的类可以有多个同名但不同方法体以及不同形参的方法。体以及不同形参的方法。体以及不同形参的方法。体以及不同形参的方法。两种情况:两种情况:两种情况:两种情况:覆盖:在子类中直接定义和父类同样的属性和方法,但重覆盖:在子类中直接定义和父类同样的属性和方法,但重覆盖:在子类中直接定义和父类同样的属性和方法,但重覆盖:在子类中直接定义和父类同样的属性和方法,但重新编写了方法体,即子类与父类方法的形参与返回值都相新编写了方法体,即子类与父类方法的形参与返回值都相新编写了方法体,即子类与父类方法的形参与返回值都相新编写了方法体,即子类与父类方法的形参与返回值都相同,而内部处理不同,这种方法在使用过程中,同,而内部处理不同,这种方法在使用过程中,同,而内部处理不同,这种方法在使用过程中,同,而内部处理不同,这种方法在使用过程中,JavaJava虚拟虚拟虚拟虚拟机会根据调用这个方法的类来确定哪个方法被调用机会根据调用这个方法的类来确定哪个方法被调用机会根据调用这个方法的类来确定哪个方法被调用机会根据调用这个方法的类来确定哪个方法被调用重载:同一个类定义中有多个同名的方法,但有不同的形重载:同一个类定义中有多个同名的方法,但有不同的形重载:同一个类定义中有多个同名的方法,但有不同的形重载:同一个类定义中有多个同名的方法,但有不同的形参,而且每个方法有不同的方法体,调用时根据形参的个参,而且每个方法有不同的方法体,调用时根据形参的个参,而且每个方法有不同的方法体,调用时根据形参的个参,而且每个方法有不同的方法体,调用时根据形参的个数和类型来决定调用的是哪个方法数和类型来决定调用的是哪个方法数和类型来决定调用的是哪个方法数和类型来决定调用的是哪个方法注:不能根据返回值的类型来区分重载的方法注:不能根据返回值的类型来区分重载的方法注:不能根据返回值的类型来区分重载的方法注:不能根据返回值的类型来区分重载的方法多态的概念多态是指在一棵继承树中的类可以有多个同名但1515方法的覆盖与重载的区别方法的覆盖与重载的区别方法的覆盖是子类和父类之间的关系,而重载是同一类内部多方法的覆盖是子类和父类之间的关系,而重载是同一类内部多方法的覆盖是子类和父类之间的关系,而重载是同一类内部多方法的覆盖是子类和父类之间的关系,而重载是同一类内部多个方法间的关系个方法间的关系个方法间的关系个方法间的关系方法的覆盖一般是两个方法间的,而重载时可能有多个重载方方法的覆盖一般是两个方法间的,而重载时可能有多个重载方方法的覆盖一般是两个方法间的,而重载时可能有多个重载方方法的覆盖一般是两个方法间的,而重载时可能有多个重载方法法法法覆盖的方法有相同的方法名和形参表,而重载的方法只能有相覆盖的方法有相同的方法名和形参表,而重载的方法只能有相覆盖的方法有相同的方法名和形参表,而重载的方法只能有相覆盖的方法有相同的方法名和形参表,而重载的方法只能有相同的方法名,不能有相同的形参表同的方法名,不能有相同的形参表同的方法名,不能有相同的形参表同的方法名,不能有相同的形参表覆盖时区分方法的是根据调用他的对象,而重载是根据形参来覆盖时区分方法的是根据调用他的对象,而重载是根据形参来覆盖时区分方法的是根据调用他的对象,而重载是根据形参来覆盖时区分方法的是根据调用他的对象,而重载是根据形参来决定调用的是哪个方法决定调用的是哪个方法决定调用的是哪个方法决定调用的是哪个方法用用用用finalfinal修饰的方法是不能被子类覆盖的,只能被重载修饰的方法是不能被子类覆盖的,只能被重载修饰的方法是不能被子类覆盖的,只能被重载修饰的方法是不能被子类覆盖的,只能被重载方法的覆盖与重载的区别方法的覆盖是子类和父类之间的关系,而重1616publicClassParentspublicClassParentspublicvoidprint()publicvoidprint()System.out.println(“parents”);System.out.println(“parents”);publicClassFatherextendsParentspublicClassFatherextendsParentspublicvoidprint()publicvoidprint()System.out.println(“father”);System.out.println(“father”);publicClassMotherextendsParentspublicClassMotherextendsParentspublicvoidprint()publicvoidprint()System.out.println(“mother”);System.out.println(“mother”);publicClassTestpublicClassTestpublicvoidfind(Parentsp)publicvoidfind(Parentsp)p.print();p.print();publicstaticvoidmain(Stringargs)publicstaticvoidmain(Stringargs)Testt=newTest();Testt=newTest();Fatherf=newFather();Fatherf=newFather();Motherm=newMother();Motherm=newMother();t.find(f);t.find(f);t.find(m);t.find(m);publicClassParentspubli1717最后的输出结果分别是最后的输出结果分别是最后的输出结果分别是最后的输出结果分别是fatherfather和和和和mothermother,将派生类的引用传给基类的引用,然后调用重写方法,基类的引用之将派生类的引用传给基类的引用,然后调用重写方法,基类的引用之将派生类的引用传给基类的引用,然后调用重写方法,基类的引用之将派生类的引用传给基类的引用,然后调用重写方法,基类的引用之所以能够找到应该调用那个派生类的方法,就是因为程序在运行时进所以能够找到应该调用那个派生类的方法,就是因为程序在运行时进所以能够找到应该调用那个派生类的方法,就是因为程序在运行时进所以能够找到应该调用那个派生类的方法,就是因为程序在运行时进行了绑定行了绑定行了绑定行了绑定。在在在在JavaJava中,谈论多态就是在讨论方法调用的绑定,绑定就是将一个方中,谈论多态就是在讨论方法调用的绑定,绑定就是将一个方中,谈论多态就是在讨论方法调用的绑定,绑定就是将一个方中,谈论多态就是在讨论方法调用的绑定,绑定就是将一个方法调用同一个方法主体关联起来。在法调用同一个方法主体关联起来。在法调用同一个方法主体关联起来。在法调用同一个方法主体关联起来。在C C语言中,方法语言中,方法语言中,方法语言中,方法(在在在在C C中称为函数中称为函数中称为函数中称为函数)的绑定是由编译器来实现的,在英文中称为的绑定是由编译器来实现的,在英文中称为的绑定是由编译器来实现的,在英文中称为的绑定是由编译器来实现的,在英文中称为earlybinding(earlybinding(前期绑定前期绑定前期绑定前期绑定),因此,大家自然就会想到相对应的,因此,大家自然就会想到相对应的,因此,大家自然就会想到相对应的,因此,大家自然就会想到相对应的latebinding(latebinding(后期绑定后期绑定后期绑定后期绑定),这在,这在,这在,这在JavaJava中通常叫做中通常叫做中通常叫做中通常叫做run-timebinding(run-timebinding(运行时绑定运行时绑定运行时绑定运行时绑定),运行时绑定的目的,运行时绑定的目的,运行时绑定的目的,运行时绑定的目的就是在代码运行的时候能够判断对象的类型。就是在代码运行的时候能够判断对象的类型。就是在代码运行的时候能够判断对象的类型。就是在代码运行的时候能够判断对象的类型。多态的作用就是用来将接口和实现分离开,改善代码的组织结构,增多态的作用就是用来将接口和实现分离开,改善代码的组织结构,增多态的作用就是用来将接口和实现分离开,改善代码的组织结构,增多态的作用就是用来将接口和实现分离开,改善代码的组织结构,增强代码的可读性。强代码的可读性。强代码的可读性。强代码的可读性。最后的输出结果分别是father和mother,1818多态的一个小结:多态的一个小结:多态的一个小结:多态的一个小结:JavaJava中除了中除了中除了中除了staticstatic和和和和finalfinal方法外,其他所有的方法都是运行时绑定的。方法外,其他所有的方法都是运行时绑定的。方法外,其他所有的方法都是运行时绑定的。方法外,其他所有的方法都是运行时绑定的。privateprivate方法都被隐式指定为方法都被隐式指定为方法都被隐式指定为方法都被隐式指定为finalfinal的,因此的,因此的,因此的,因此finalfinal的方法不会在运行时的方法不会在运行时的方法不会在运行时的方法不会在运行时绑定。当在派生类中重写基类中绑定。当在派生类中重写基类中绑定。当在派生类中重写基类中绑定。当在派生类中重写基类中staticstatic、finalfinal、或、或、或、或privateprivate方法时,实方法时,实方法时,实方法时,实质上是创建了一个新的方法。质上是创建了一个新的方法。质上是创建了一个新的方法。质上是创建了一个新的方法。在派生类中,对于基类中的在派生类中,对于基类中的在派生类中,对于基类中的在派生类中,对于基类中的privateprivate方法,最好采用不同的名字。方法,最好采用不同的名字。方法,最好采用不同的名字。方法,最好采用不同的名字。包含抽象方法的类叫做抽象类。注意定义里面包含这样的意思,只要包含抽象方法的类叫做抽象类。注意定义里面包含这样的意思,只要包含抽象方法的类叫做抽象类。注意定义里面包含这样的意思,只要包含抽象方法的类叫做抽象类。注意定义里面包含这样的意思,只要类中包含一个抽象方法,该类就是抽象类。抽象类在派生中就是作为类中包含一个抽象方法,该类就是抽象类。抽象类在派生中就是作为类中包含一个抽象方法,该类就是抽象类。抽象类在派生中就是作为类中包含一个抽象方法,该类就是抽象类。抽象类在派生中就是作为基类的角色,为不同的子类提供通用的接口。基类的角色,为不同的子类提供通用的接口。基类的角色,为不同的子类提供通用的接口。基类的角色,为不同的子类提供通用的接口。对象清理的顺序和创建的顺序相反,当然前提是自己想手动清理对象,对象清理的顺序和创建的顺序相反,当然前提是自己想手动清理对象,对象清理的顺序和创建的顺序相反,当然前提是自己想手动清理对象,对象清理的顺序和创建的顺序相反,当然前提是自己想手动清理对象,因为大家都知道因为大家都知道因为大家都知道因为大家都知道JavaJava垃圾回收器。垃圾回收器。垃圾回收器。垃圾回收器。在基类的构造方法中小心调用基类中被重写的方法,这里涉及到对象在基类的构造方法中小心调用基类中被重写的方法,这里涉及到对象在基类的构造方法中小心调用基类中被重写的方法,这里涉及到对象在基类的构造方法中小心调用基类中被重写的方法,这里涉及到对象初始化顺序。初始化顺序。初始化顺序。初始化顺序。构造方法是被隐式声明为构造方法是被隐式声明为构造方法是被隐式声明为构造方法是被隐式声明为staticstatic方法。方法。方法。方法。用继承表达行为间的差异,用字段表达状态上的变化。用继承表达行为间的差异,用字段表达状态上的变化。用继承表达行为间的差异,用字段表达状态上的变化。用继承表达行为间的差异,用字段表达状态上的变化。多态的一个小结:1919classclassSuperSuperstaticstaticStringgreeting()Stringgreeting()returnreturnGoodnight;Goodnight;Stringname()Stringname()returnreturnRichard;Richard;classclassSubSubextendsextendsSuperSuperstaticstaticStringgreeting()Stringgreeting()returnreturnHello;Hello;Stringname()Stringname()returnreturnDick;Dick;classclassTestTestpublicpublic staticstatic voidvoidmain(Stringargs)main(Stringargs)Supers=Supers=newnewSub();Sub();System.System.outout.println(s.println(s.greetinggreeting()+,()+,+s.name();+s.name();classSuperclassTest2020运行运行TestTest类的结果如下类的结果如下Goodnight,DickGoodnight,Dick试图用子类的静态方法隐藏父类中同样标识的实例方法是试图用子类的静态方法隐藏父类中同样标识的实例方法是试图用子类的静态方法隐藏父类中同样标识的实例方法是试图用子类的静态方法隐藏父类中同样标识的实例方法是不合法的编译器将会报错不合法的编译器将会报错不合法的编译器将会报错不合法的编译器将会报错试图用子类的实例方法覆盖父类中同样标识的静态方法也试图用子类的实例方法覆盖父类中同样标识的静态方法也试图用子类的实例方法覆盖父类中同样标识的静态方法也试图用子类的实例方法覆盖父类中同样标识的静态方法也是不合法的编译器同样会报错是不合法的编译器同样会报错是不合法的编译器同样会报错是不合法的编译器同样会报错静态方法和最终方法带关键字静态方法和最终方法带关键字静态方法和最终方法带关键字静态方法和最终方法带关键字finalfinal的方法不能被覆盖的方法不能被覆盖的方法不能被覆盖的方法不能被覆盖实例方法能够被覆盖实例方法能够被覆盖实例方法能够被覆盖实例方法能够被覆盖抽象方法必须在具体类中被覆盖抽象方法必须在具体类中被覆盖抽象方法必须在具体类中被覆盖抽象方法必须在具体类中被覆盖运行Test类的结果如下2121常量的定义使用关键字使用关键字final定义常量,例如:定义常量,例如:finaldoublePI=3.1415926;作为一种约定,在定义常量时,通常采用作为一种约定,在定义常量时,通常采用大写形式。大写形式。final常量可以在声明的同时赋初值,也可常量可以在声明的同时赋初值,也可以在构造函数中赋初值。以在构造函数中赋初值。为了节省内存,我们通常将常量声明为静为了节省内存,我们通常将常量声明为静态的(态的(static)。)。常量的定义使用关键字final定义常量,例如:2222当子类中的变量名与父类的相同,原来的变量被遮盖。当子类中的变量名与父类的相同,原来的变量被遮盖。当子类中的变量名与父类的相同,原来的变量被遮盖。当子类中的变量名与父类的相同,原来的变量被遮盖。方法的覆盖方法的覆盖(overriding)和重载和重载(overloading)。子孙类中定义的方法和祖先类中某个方法同名、子孙类中定义的方法和祖先类中某个方法同名、同参数行,则祖先类中的该方法被覆盖;同参数行,则祖先类中的该方法被覆盖;方法的重载是指一个对象的多态性,即多个方方法的重载是指一个对象的多态性,即多个方法用相同的名称,但参数行不同。法用相同的名称,但参数行不同。JAVA开发与应用抽象类与接口及多态课件2323final在方法之前在方法之前,防止该方法被覆盖;防止该方法被覆盖;final在类之前在类之前,标是该类不能被继承;标是该类不能被继承;final在变量之前在变量之前,定义一个常量。定义一个常量。JAVA开发与应用抽象类与接口及多态课件2424特殊变量thisthis变量代表对象本身变量代表对象本身当类中有两个同名变量,一个属于类(类当类中有两个同名变量,一个属于类(类的成员变量),而另一个属于某个特定的的成员变量),而另一个属于某个特定的方法(方法中的局部变量),使用方法(方法中的局部变量),使用this区分区分成员变量和局部变量。成员变量和局部变量。使用使用this简化构造函数的调用。简化构造函数的调用。特殊变量thisthis变量代表对象本身2525特殊变量this关于实例方法和实例数据成员的进一步说明关于实例方法和实例数据成员的进一步说明关于实例方法和实例数据成员的进一步说明关于实例方法和实例数据成员的进一步说明 一个类所有的实例(对象)调用的成员方法在内一个类所有的实例(对象)调用的成员方法在内存中只有一份拷贝,尽管在内存中可能有多个对存中只有一份拷贝,尽管在内存中可能有多个对象,而数据成员在类的每个对象所在内存中都存象,而数据成员在类的每个对象所在内存中都存在着一份拷贝。在着一份拷贝。thisthis变量允许相同的实例方法为不变量允许相同的实例方法为不同的对象工作。同的对象工作。每当调用一个实例方法时,每当调用一个实例方法时,每当调用一个实例方法时,每当调用一个实例方法时,thisthis变量将被设置成引用该实例方法的特定的类对象。变量将被设置成引用该实例方法的特定的类对象。变量将被设置成引用该实例方法的特定的类对象。变量将被设置成引用该实例方法的特定的类对象。方法的代码接着会与方法的代码接着会与方法的代码接着会与方法的代码接着会与thisthis所代表的对象的特定数所代表的对象的特定数所代表的对象的特定数所代表的对象的特定数据建立关联。据建立关联。据建立关联。据建立关联。特殊变量this关于实例方法和实例数据成员的进一步说明2626特殊变量super特殊变量特殊变量super,提供了对父类的访问。,提供了对父类的访问。可以使用可以使用super访问父类被子类隐藏的变量访问父类被子类隐藏的变量或覆盖的方法。或覆盖的方法。每个子类构造方法的第一条语句,都是隐每个子类构造方法的第一条语句,都是隐含地调用含地调用super(),如果父类没有这种形式,如果父类没有这种形式的构造函数,那么在编译的时候就会报错。的构造函数,那么在编译的时候就会报错。特殊变量super特殊变量super,提供了对父类的访问。2727
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!