Java基础: Super () this() | 您所在的位置:网站首页 › 在java中super代表什么 › Java基础: Super () this() |
目录 1.子类调用父类属性 2.子类调用父类方法 3.构造器 4.父类定义有参构造,但未显示定义无参构造会导致程序报错(封装错误) 总结: 1.子类调用父类属性父类Person public class Person { protected String name = "父亲"; }子类Student public class Student extends Person { private String name = "儿子"; public void test(String name){ System.out.println(name);//形参 System.out.println(this.name);//自定义实参 System.out.println(super.name);//父类实参 } }启动类Application public class Application { public static void main(String[] args) { Student student = new Student(); student.test("大儿子"); } }执行结果 第一个输出是输出了传递的参数 第二个输出this.name输出的是当前类中的name参数 第三个输出super.name输出的是父类中的name参数 2.子类调用父类方法父类Person public class Person { protected String name = "父亲"; public void print(){ System.out.println("这是一个父亲"); } }子类Student public class Student extends Person{ private String name = "儿子"; public void print(){ System.out.println("这是一个儿子"); } public void test1(){ print();//当前类的对象 this.print();//当前类的对象 super.print();//父类的对象 } }启动类Application public class Application { public static void main(String[] args) { Student student = new Student(); student.test1(); } }输出内容 前两个输出调用的都是当前类print()方法 第三个输出调用的是父类print()方法 注:私有(private)的方法无法被继承,如果父类的print()方法设置的是private(私有),那么子类就无法通过super.print()调用 3.构造器父类Person无参构造 子类Student无参构造 Application执行类 执行结果 调用的是子类Student,但是父类和子类的无参都执行了,说明还是有调用到父类。说明子类中存在隐藏代码。 super(); 就是隐藏代码 。但super();调用父类的构造器必须要在子类构造器代码的第一行,不然就会报错。 4.父类定义有参构造,但未显示定义无参构造会导致程序报错(封装错误)父类定义了有参构造,没有显示定义无参构造也同样会导致子类无参构造中的super();报错 5.如果一定要调用父类的有参构造器 只要子类的super(name);调用的是有参就可以了 |
CopyRight 2018-2019 实验室设备网 版权所有 |