Java super关键字的用法详解

网友投稿 249 2022-11-19

Java super关键字的用法详解

目录super关键字的三种用法:1. super.成员变量2. super.成员方法3. super():调用父类中的构造方法3.1.1 隐式调用父类无参数构造方法super()3.1.2 显式调用父类有参数构造方法super(id)

super关键字作用:在子类内部调用父类对象

基础语法:

1.在类的继承中,当子类继承了父类, 在构造子类的时候,一定要先帮助父类进行构造;

2. 调用super()必须写在子类构造方法的第一行,以保证在执行任何动作前,对象已经完成了初始化,否则编译不http://通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。

super关键字的三种用法:

1. super.成员变量

class Person{

public String name; //成员变量

public Person(String name) {

this.name = name;

}

}

class Student extends Person{

String name = "student";

public StudeinhuEMnt(String name) {

super(name);

}

public void help() {

//调用父类的成员属性

System.out.println(name); //student 直接使用,优先使用局部变量

System.out.println(super.name); // B 直接使用父类的成员变量

}

}

public class s {

public static void main(String[] args) {

Student p = new Student("B");

p.help();

}

}

2. super.成员方法

class {

public String name;

public Person(String name) {

this.name = name; //Test

}

public void help() {

SyinhuEMstem.out.println(this.name+"Person");

}

}

class Student extends Person{

String name = "student";

public Student(String name) {

super(name); //Test

}

public void help() {

//调用父类的成员方法

super.help();

System.out.println(this.name+"Student"); //Student this调用的式同类中的变量

}

}

public class s {

public static void main(String[] args) {

Student p = new Student("Test");

p.help();

}

}

//Test Person

//student Student

3. super():调用父类中的构造方法

3.1.1 隐式调用父类无参数构造方法super()

如果父类是无参构造,那么子类的构造方法会默认隐式的在第一行先调用父类无参数构造方法,所以super()无需手动进行调用;

public class Father{

int id;

public Father(){

System.out.println("父类构造方法");

}

}

public class Son extends Father{

public Son(){

//super(); //系统会默认生成,可有可无

System.out.println("子类构造方法");

}

}

public class Test{

public static void main(String[] args){

Son s = new Son();

}

}

//print:

//父类构造方法

//子类构造方法

3.1.2 显式调用父类有参数构造方法super(id)

如果父类是含参构造,那么此时因为父类中没有无参数构造方法,所以子类继承父类时会报错,这时就需要我们手动的调用父类的有参构造方法super(id);

public class Father{

int id;

public Father(int id){

System.out.println("父类构造方法");

}

}

public class Son extends Father{

public Son(int id){

super(id); //手动调用父类的有参构造方法

System.out.println("子类构造方法");

}

}

public class Test{

public static void main(String[] args){

Son s = new Son(1);

}

}

//print:

//父类构造方法

//子类构造方法

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:工业物联网的有线接口连接解决方案
下一篇:RS232-C接口连接器定义
相关文章

 发表评论

暂时没有评论,来抢沙发吧~