Java——面向对象的编程学习之super关键字

编程入门 行业动态 更新时间:2024-10-25 00:28:33

Java——<a href=https://www.elefans.com/category/jswz/34/1769334.html style=面向对象的编程学习之super关键字"/>

Java——面向对象的编程学习之super关键字

详解Java中super关键字的使用

  • super调用属性、方法
  • super调用构造器
  • super和this关键字的区别

super调用属性、方法

  1. super可以调用:属性、方法、构造器
  2. super可以理解为:父类的。。。
  3. super关键字的使用
    我们可以在子类的方法或构造器中,通过"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法。
    特殊情况,当父类和子类中拥有同名的属性时,如果在子类中调用父类中的属性,需要显式的使用"super.属性"的方式,表明调用是父类中声明的属性。
    子类重写了父类的方法,想要调用父类的方法,需要显式的使用"super.方法"调用,表明调用的是父类中被重写的方法。

注:父类中声明为private的属性,在子类中不能通过"super.属性"的方式进行调用
举例

public class Hello {public static void main(String[] args) {Student s1 = new Student();s1.test();}
}// 父类为Person
class Person{private int age;public String id = "12345";public void show(){System.out.println("Hello Person");}
}
// 子类继承了Person
class Student extends Person{//子类声明了一个和父类同名的属性public String id = "667788";//子类重写了父类中的show()方法@Overridepublic void show() {System.out.println("Hello Student");System.out.println(id);   // 调用本类中的属性System.out.println(super.id); // 调用父类中的属性}public void test(){show();    // 调用本类中的方法super.show();  // 调用父类中的同名方法}
}

super调用构造器

  1. 我们可以在子类的构造器中显式的使用“super(形参列表)”的方式,调用父类中声明的指定构造器
  2. super(形参列表)的使用,必须声明在子类构造器的首行
  3. 在类的构造器中,针对"this(形参列表)"或"super(形参列表)"只能二选一,不能同时出现。(this关键字的使用)
  4. 在构造器首行,没有显式的声明"this(形参列表)“或"super(形参列表)”,则默认调用的是父类中空参的构造器:super()。
  5. 在类的多个构造器中,至少有一个类的构造器使用了"super(形参列表)",调用父类的构造器。

举例

class Person{private int age;private String name;public Person(){}public Person(int age, String name){this.age = age;this.name = name;}
}class Student extends Person{private String grade;  // 年级public Student(){super();  // 调用父类中空参的构造器}public Student(int age, String name, String grade){super(age, name);   // 调用父类中含参的构造器this.grade = grade;}
}

在父类中,我们创建了两个构造器,一个空参,另外一个含有参数,并对属性进行了赋值。子类Student继承父类后,也创建了两个构造器,并通过super关键字调用了父类中的相应构造器。调用构造器的方法是多样的,实际中可以按照我们的需求灵活调用。例如对于上面的代码,还可写成:

class Student extends Person{private String grade;  // 年级public Student(int age, String name){super(age, name); }public Student(String grade){this.grade = grade;}
}

super和this关键字的区别

区别thissuper
调用属性调用本类中的属性,如果本类没有此属性则从父类中继续查找访问父类中的属性
调用方法直接访问本类中的方法访问父类中的方法
调用构造器调用本类构造器,必须放在构调器首行调用父类构造器,必须放在子类构造器的首行

更多推荐

Java——面向对象的编程学习之super关键字

本文发布于:2023-07-28 15:26:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1235714.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:面向对象   关键字   Java   super

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!