1、this的用法
this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
有三种用法:
1)、指向当前对象本身,略;
2)、与形参名字相同,用与区分:
class Person { private int age = 10; public Person(){ System.out.println("初始化年龄:"+age);} public int GetAge(int age){ this.age = age; return this.age; }}3)、引用构造函数,与super有一腿;
2、super
1)、指向当前对象的最近的父类,用super.xxx调用父类的属性和方法;
2)、子类中的成员变量或方法与父类中的成员变量或方法重名:
class Country { String name; void value() { name = "China"; }}3)、引用构造函数:
class Person { public static void prt(String s) { System.out.println(s); } Person() { prt("父类·无参数构造方法: "+"A Person."); }//构造方法(1) Person(String name) { prt("父类·含一个参数的构造方法: "+"A person's name is " + name); }//构造方法(2) } public class Chinese extends Person { Chinese() { super(); // 调用父类构造方法(1) prt("子类·调用父类”无参数构造方法“: "+"A chinese coder."); } Chinese(String name) { super(name);// 调用父类具有相同形参的构造方法(2) prt("子类·调用父类”含一个参数的构造方法“: "+"his name is " + name); } Chinese(String name, int age) { this(name);// 调用具有相同形参的构造方法(3) prt("子类:调用子类具有相同形参的构造方法:his age is " + age); } public static void main(String[] args) { Chinese cn = new Chinese(); cn = new Chinese("codersai"); cn = new Chinese("codersai", 18); } }运行结果:
父类·无参数构造方法: A Person.
子类·调用父类”无参数构造方法“: A chinese coder.
父类·含一个参数的构造方法: A person's name is codersai
子类·调用父类”含一个参数的构造方法“: his name is codersai
父类·含一个参数的构造方法: A person's name is codersai
子类·调用父类”含一个参数的构造方法“: his name is codersai
子类:调用子类具有相同形参的构造方法:his age is 18
super和this可以调用父类和本类中的各种形式的构造方法;但从本质上将this是一个指针指向本对象,而super是一个关键字;
4、子类是否会继承父类的构造方法
先给结论:
1)、子类实例化对象时,会调用父类的构造方法;
2)、如果子类没有显式的调用父类的构造方法,则会默认调用super;
3)、如果父类中没有无参构造方法,而子类中又没有显示调用父类构造方法,则编译器报错。如果用super显式调用父类带参的构造方法,需要将其置于第一句,否则编译器报错。
例子如下:
不显式调用父类带参方法,报错。

被折叠的 条评论
为什么被折叠?



