- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]JAVA学习笔记之父类与子类
this的用法
构造器和方法使用关键字this有很大的区别。方法引用this指向正在执行方法的类的实例。静态方法不能使用this关键字,因为静态方法不属于类的实例,所以this也就没有什么东西去指向。构造器的this指向同一个类中,不同参数列表的另外一个构造器,我们看看下面的代码:
public class Platypus {
String name;
Platypus(String input) {
name = input;
}
Platypus() {
this(John/Mary Doe);
}
public static void main(String args[]) {
Platypus p1 = new Platypus(digger);
Platypus p2 = new Platypus();
}
}
在上面的代码中,有2个不同参数列表的构造器。第一个构造器,给类的成员name赋值,第二个构造器,调用第一个构造器,给成员变量name一个初始值 John/Mary Doe.
在构造器中,如果要使用关键字this,那么,必须放在第一行,如果不这样,将导致一个编译错误。
super的用法
构造器和方法,都用关键字super指向超类,但是用的方法不一样。方法用这个关键字去执行被重载的超类中的方法。看下面的例子:
class Mammal {
void getBirthInfo() {
System.out.println(born alive.);
}
}
class Platypus extends Mammal {
void getBirthInfo() {
System.out.println(hatch from eggs);
System.out.print(a mammal normally is );
super.getBirthInfo();
}
}
在上面的例子中,使用super.getBirthInfo()去调用超类Mammal中被重载的方法。
构造器使用super去调用超类中的构造器。而且这行代码必须放在第一行,否则编译将出错。看下面的例子:
public class SuperClassDemo {
SuperClassDemo() {}
}
class Child extends SuperClassDemo {
Child() {
super();
}
}
在上面这个没有什么实际意义的例子中,构造器 Child()包含了 super,它的作用就是将超类中的构造器SuperClassDemo实例化,并加到 Child类中。
编译器自动加入代码
编译器自动加入代码到构造器,对于这个,java程序员新手可能比较混淆。当我们写一个没有构造器的类,编译的时候,编译器会自动加上一个不带参数的构造器,例如:public class Example {}
编译后将如下代码:
public class Example {
Example() {}
}
在构造器的第一行,没有使用super,那么编译器也会自动加上,例如:
public class TestConstructors {
TestConstructors() {}
}
编译器会加上代码,如下:
public class TestConstructors {
TestConstructors() {
super;
}
}
仔细想一下,就知道下面的代码
public class Example {}
经过会被编译器加代码形如:
public class Example {
Example() {
super;
}
}
继承
构造器是不能被继承的。子类可以继承超类的任何方法。看看下面的代码:
public class Example {
public void sayHi {
system.out.println(Hi);
}
Example() {}
}
public class SubClass extends Example {
}
this
指向同一个类中另外一个构造器,在第一行
指向当前类的一个实例,不能用于静态方法
super
调用父类的构造器,在第一行
调用父类中一个重载的方法
继承
构造器不能被继承
方法可以被继承
编译器自动加入一个缺省的构造器
自动加入(如果没有)
不支持
您可能关注的文档
- [工学]201111萃取第三节.ppt
- [工学]2012-6第六章 输入输出与中断.ppt
- [工学]2014必威体育精装版高考总复习资料金榜学案化学第七章 第二节.ppt
- [工学]2014一轮复习指导:第6章 第3讲 电容器与电容、带电粒子在电场中的运动.ppt
- [工学]2013第一次课建筑识图与构造-4.ppt
- [工学]2信息表示11级.ppt
- [工学]22 3相桥式24d.ppt
- [工学]2土的物理性质及分类.ppt
- [工学]2章-知识表达-人工智能研究生教学-09.ppt
- [工学]3 零件分类成组方法-1-2.ppt
- 初中英语教师数字教学工具应用评价及提升策略分析教学研究课题报告.docx
- 1 《基于物联网技术的新能源汽车电池制造工艺监测与分析》教学研究课题报告.docx
- 小学英语教学:校园景观英语口语情境创设与教育创新实践教学研究课题报告.docx
- 初中化学教师教学画像构建的情感分析技术应用与教学策略探讨教学研究课题报告.docx
- 人工智能教育机器人辅助下的小学美术个性化创作任务探索教学研究课题报告.docx
- 高中物理教学中电磁感应现象的教学策略与实验教学研究课题报告.docx
- 数字化教学管理对小学美术教师教学素养的影响研究教学研究课题报告.docx
- 大学生健康素养调查问卷.pptx
- 幼儿科学空气活动标准教案通用.pptx
- 2025山东师范大学第二附属中学招聘11人(第二批)模拟试卷带答案详解.docx
文档评论(0)