- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
项目5-任务2
项目5 :计算平面图形的面积 构造方法的继承规则 1、若父类没有构造方法: 若子类也无构造方法,系统调用默认空构造方法 若子类有构造方法,可在子类的构造方法中初始化从父类继承的成员变量。 构造方法的继承规则 2、若父类有构造方法: 1) 创建子类对象时会先执行父类的无参数的构造方法,若父类中没有无参的构造方法,则编译出错。 除非: 2) 在子类中显式地指明调用父类的哪个构造方法。 显式调用父类构造方法格式:super ([argument_list]) 子类若使用super,必须写在子类构造方法的第一行 构造方法的继承规则—示例 class SuperClass{ private int n; SuperClass(){System.out.println(SuperClass());} SuperClass(int n){ this.n=n; System.out.println(SuperClass(+n+));} } class SubClass extends SuperClass{ private int n; SubClass(){ super(100); System.out.println(SubClass()); } SubClass(int n){ this.n=n; System.out.println(SubClass(+n+)); }} public static void main(String[] args){ SubClass sc1=new SubClass(); SubClass sc2=new SubClass(200); } this和super Java系统默认每个类缺省地具有null、this和super三个引用,在任意类中都可以不加说明而直接使用它们。 this:代表了当前对象的一个引用 super:是当前对象的直接父类对象的引用,super可以用来引用父类中的(被覆盖的)方法、(被隐藏的)变量及构造方法。 二者可以用来调用当前对象或父类对象的构造方法,在调用父类的构造方法时,super必须是子类构造方法的第一条语句。 不能明确访问被隐藏的“爷爷辈”的数据成员 示例:this和super class A { private int a; A(){a=0;} A(int i){a=i;} int geta(){return a;} } class B extends A { double b1,b2; B(){this(11.1,12.2);} B(double d1,double d2) {b1=d1;b2=d2;} B(int i,double d1,double d2) {super(i);b1=d1;b2=d2;} B(int i,double d) {super(i);b1=d;} B(double d) {super(4);b2=d;} } 对象类型转换 父类的变量可以引用子类对象(即子类引用可以赋给父类引用) 如,下列语句是正确的: Student1 s = new Student1(); //student引用刚创建的子类对象 Person1 p = s; //父类变量p引用子类对象 上述语句也可以写成: Person1 p = new Student1(); 引用子类对象后,父类变量只能引用父类中定义的成员,不能访问子类中定义的成员。 例如,父类Person1的变量p只能访问父类Person1定义的成员name、setName()、getName(),无法访问子类Student1定义的成员stuNo、setstuNo()、getstuNo(),尽管父类变量引用的是子类对象。 子类的对象可以当作父类的对象来使用称作向上转型(upcasting) 对象类型转换 一般,子类的引用变量不可以引用父类对象(即父类变量一般不可以赋给子类的变量),如: Person1 p2=new Person1(); Student1 s2=p2;//此语句出现编译错误, Type mismatch: //cannot convert from Person1 to Student1 除非:父类变量引用的是子类对象,且必须使用强制类型转换将父类转换为子类对象后,才可以
文档评论(0)