目录
下面通过四组Child类和Test类代码,来体现super和this关键字的具体应用
一共有三个类
Person类(代码不变)如下:
public class Person {
private String name;
public Person(){
System.out.println("one person");
}
public Person(String name){
this.name=name;
System.out.println("one person,设置了人名");
}
public int Person( int i){
return i;
}
}
方法重载的意思是一个类中可以有多个方法具有相同的名字,即使方法类型不同,这些方法的参数必须不同,即参数的个数不同,或者参数的类型不同。
Person类对构造方法进行了重载
public class Child extends Person{
}
Child类中默认有一个父类(Person)的无参构造方法
public class Test {
public static void main(String args[]){
Child child =new Child();
}
}
运行结果为:
one person
public class Child extends Person{
public Child(){
//super();
System.out.println("a child");
}
}
子类每一个构造方法的第一行都有一条默认的语句super();
public class Test {
public static void main(String args[]){
Child child =new Child();
}
}
上面Child类中如果不加super();语句,系统也会默认加上,运行结果都为:
one person a child
class Child extends Person{
private String hobby;
public Child(String hobby){
//super();
this.hobby=hobby;
System.out.println("子类的爱好"+hobby);
}
}
public class Test {
public static void main(String args[]){
Child childone =new Child("篮球");
}
}
上面Child类中如果不加super();语句,系统也会默认加上,运行结果都为:
one person 子类的爱好篮球
class Child extends Person{
private String hobby;
public Child(String hobby){
// super();
this(); //调用自己的构造函数,super()和this()不能同时使用
this.hobby=hobby;
System.out.println("子类的爱好"+hobby);
}
public Child(){
super();
System.out.println("a child");
}
}
public class Test {
public static void main(String args[]){
Child childone =new Child("篮球");
}
}
Child类中不加this();语句运行结果为:
one person 子类的爱好篮球
Child类中加上this();语句运行结果为:
one person a child 子类的爱好篮球
注意:
当父类中没有空参数的构造方法时,子类的构造方法必须通过this或者super语句指定要访问的构造方法
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有