专业网站营销,一见钟情 网站,西安市做网站的公司,湘潭租房网站super 关键字与 this 类似#xff0c;this 用来表示当前类的实例#xff0c;super 用来表示父类。super 可以用在子类中#xff0c;通过点号(.)来获取父类的成员变量和方法。super 也可以用在子类的子类中#xff0c;Java 能自动向上层类追溯。父类行为被调用#xff0c;就…super 关键字与 this 类似this 用来表示当前类的实例super 用来表示父类。super 可以用在子类中通过点号(.)来获取父类的成员变量和方法。super 也可以用在子类的子类中Java 能自动向上层类追溯。父类行为被调用就好象该行为是本类的行为一样而且调用行为不必发生在父类中它能自动向上层类追溯。super 关键字的功能 调用父类中声明为 private 的变量。点取已经覆盖了的方法。作为方法名表示父类构造方法。调用隐藏变量和被覆盖的方法 1 public class Demo{2 public static void main(String[] args) {3 Dog obj new Dog();4 obj.move();5 }6 }7 class Animal{8 private String desc Animals are humans good friends;9 // 必须要声明一个 getter 方法
10 public String getDesc() { return desc; }
11 public void move(){
12 System.out.println(Animals can move);
13 }
14 }
15 class Dog extends Animal{
16 public void move(){
17 super.move(); // 调用父类的方法
18 System.out.println(Dogs can walk and run);
19 // 通过 getter 方法调用父类隐藏变量
20 System.out.println(Please remember: super.getDesc());
21 }
22 } 运行结果 Animals can moveDogs can walk and runPlease remember: Animals are humans good friendsmove() 方法也可以定义在某些祖先类中比如父类的父类Java 具有追溯性会一直向上找直到找到该方法为止。通过 super 调用父类的隐藏变量必须要在父类中声明 getter 方法因为声明为 private 的数据成员对子类是不可见的。 调用父类的构造方法 在许多情况下使用默认构造方法来对父类对象进行初始化。当然也可以使用 super 来显示调用父类的构造方法。 1 public class Demo{2 public static void main(String[] args) {3 Dog obj new Dog(花花, 3);4 obj.say();5 }6 }7 class Animal{8 String name;9 public Animal(String name){
10 this.name name;
11 }
12 }
13 class Dog extends Animal{
14 int age;
15 public Dog(String name, int age){
16 super(name);
17 this.age age;
18 }
19 public void say(){
20 System.out.println(我是一只可爱的小狗我的名字叫 name 我 age 岁了);
21 }
22 } 运行结果 我是一只可爱的小狗我的名字叫花花我3岁了注意无论是 super() 还是 this()都必须放在构造方法的第一行。值得注意的是 在构造方法中调用另一个构造方法调用动作必须置于最起始的位置。不能在构造方法以外的任何方法内调用构造方法。在一个构造方法内只能调用一个构造方法。 如果编写一个构造方法既没有调用 super() 也没有调用 this()编译器会自动插入一个调用到父类构造方法中而且不带参数。 最后注意 super 与 this 的区别super 不是一个对象的引用不能将 super 赋值给另一个对象变量它只是一个指示编译器调用父类方法的特殊关键字。 系列文章 Java知多少上 Java知多少中转载于:https://www.cnblogs.com/Coda/p/4399243.html