网站大量收购闲置独家精品文档,联系QQ:2885784924

[工学]JAVA学习笔记之父类与子类.doc

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]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 调用父类的构造器,在第一行 调用父类中一个重载的方法 继承 构造器不能被继承 方法可以被继承 编译器自动加入一个缺省的构造器 自动加入(如果没有) 不支持

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档