继承是对已有的类的扩展,它继承了父类所有的属性和方法(私有属性和方法同样继承了,但是不能使用)。
在类的定义中,需要通过构造器初始化,在创建对象时,new的其实就是构造器,而构造器分为有参构造器和无参构造器。
this用法:
1、在程序中产生二义性时,应该使用this来区分。比如区分全局变量和局部变量。普通方法中,this总是指向调用该方法的对象;构造器中,this指向正要初始化的对象。
2、可以使用this调用重载构造器,避免相同的初始化代码。但是只能在构造器中使用,并且位于构造器第一行。
3、this不能用于static方法中。
super()关键字:
super是直接父类对象的引用,即通过super来访问父类中的方法或属性。也可以根据super选择调用父类的构造器。
以下为总结出的构造器创建的几个应该注意的问题:
a、一般情况下,若无手动添加任何构造器,则编译器会默认创建一个无参构造器
b、若一个类中只有有参构造器,而没有无参构造器,编译器不会提供默认的无参构造器。
c、在父类中若存在有参构造器,没有定义无参构造器,编译器不会提供默认的无参构造器,则子类无法正常继承父类。编译无法通过。
d、在类中定义了一个无参构造器,在其子类中不需要通过super()调用父类无参构造器,编译器会默认调用。
e、this引用该类的其他构造器或super调用父类相关属性或方法或构造器,必须在构造器第一行,且两则不可同时出现。
public class Test{
public static void main(String[] args) {
Man m = new Man("LEE","男",22);
m.wake();
m.work();
System.out.println("------------------------------------");
Women w = new Women("CHEN","女",22);
w.wake();
w.shopping();
System.out.println("------------------------------------");
Women w2 = new Women("chen","女",22,true);
w2.wake();
w2.shopping();
}
}
class Person{
String name;
int age;
public Person() { //父类无参构造器
System.out.println("无参构造器");
}
public Person(String name) { //父类有参构造器
System.out.println("有参构造器");
}
public void wake() {
System.out.println(name+"起床啦!");
}
}
class Man extends Person{
String gender;
public Man(String name,String gender,int age) {
//super();可有可无
super(name); //选择调用父类有参构造器
//super.wake() 调用父类方法
this.name = name;
this.gender = gender;
this.age = age;
}
public void work() {
System.out.println("工作赚钱!");
}
}
class Women extends Person{
String gender;
public Women(String name,String gender,int age) {
this("chen","女",22,false); //调用其他构造器时,必须在第一行
this.name = name;
this.gender = gender;
this.age = age;
//this.keep()调用本类中的方法,则在对象创建过后自动执行该方法
}
public Women(String name,String gender,int age,boolean right) {
this.name = name;
this.gender = gender;
this.age = age;
if(right){
System.out.println("成功!");
}
else {
System.out.println("加油!");
}
}
public void keep() {
System.out.println("做家务啦!");
}
public void shopping() {
System.out.println("逛街啦!");
}
}
输出结果:
有参构造器
LEE起床啦!
工作赚钱!
------------------------------------
无参构造器
加油!
CHEN起床啦!
逛街啦!
------------------------------------
无参构造器
成功!
chen起床啦!
逛街啦!