0005super的理解

编程入门 行业动态 更新时间:2024-10-28 05:18:50

/* 从父类中去查找,引用父类的xx
要求:super只能方法在子类中可见的属性、方法、构造器,私有的不行
用法:

1、super.属性

当子类声明了和父类同名的属性时,可以使用super.属性来访问父类的属性
2、super.方法
当在子类中需要调用父类被重写的方法时,可以使用super.方法
3、super()或者super(实参列表)
super();调用父类的无参构造
super(实参列表):调用父类的有参构造
**注意:
(1)super()或super(实参列表)必须在子类构造器的首行
(2)如果子类的构造器中,没有写super(),它也存在,但是如果子类构造器中写super(实参列表),那么super()就不会存在的**

*/
啥也不说了,我们来贴代码:
最好的例子,看他们的输出结果

public class TestSuper {public static void main(String[] args) {B b=new B();b.printNum(5);}
}
class A{int num=1;
}
class B extends A{int num=2;public void printNum(int num){System.out.println(num);//局部变量(int num)System.out.println(this.num);//成员变量System.out.println(super.num);}
}

别以为就完了,我们继续唠嗑


啥也不说了,贴代码,细品super的超级牛逼之处

package .atguigu.test02;/*	* super:从父类中去查找,引用父类的xx要求:super只能方法在子类中可见的属性、方法、构造器,私有的不行用法:1、super.属性当子类声明了和父类同名的属性时,可以使用super.属性来访问父类的属性2、super.方法当在子类中需要调用父类被重写的方法时,可以使用super.方法3、super()或者super(实参列表)super();调用父类的无参构造super(实参列表):调用父类的有参构造注意:(1)super()或super(实参列表)必须在子类构造器的首行(2)如果子类的构造器中,没有写super(),它也存在,但是如果子类构造器中写super(实参列表),那么super()就不会存在的*/public class TestSuper {public static void main(String[] args) {B b=new B();b.printNum(5);}
}
class A{int num=1;
}
class B extends A{int num=2;public void printNum(int num){System.out.println(num);//局部变量(int num)System.out.println(this.num);//成员变量System.out.println(super.num);}
}
class Human{private String name;private int age;public Human() {super();}public Human(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getInfo(){return "姓名"+name+", 年龄"+age;}	
}
class XueSheng extends Human{private int score;//重点来了public XueSheng(String name, int age,int score) {super(name,age);//直接调用父类的Human的有参构造this.score = score;}public XueSheng(){//调用父类Human的无参构造}public int getScore(int score){return score;}public void setScore(int score){this.score=score;}public String getInfo(){//return "姓名:"+getName()+" ,年龄:"+getAge()+" ,成绩:"+score;//本来是可以这样写的,但是我们得学会偷懒,所以换成下面的写法return super.getInfo() + " ,成绩:"+score;}
}

二、super的常用场景:默认是调用父类的无参构造,那么我们怎么调用父类的有参构造呢

package .atguigu.test02.polymorphism;public class Super2调用父类的有参构造 {public static void main(String[] args) {int age=20;Dog2 dog=new Dog2(age);}
}
//父类——动物 
class Animal2{public int age = 10;public String name;public void eat(){System.out.println("动物bai具有吃东du西的zhi能力");}public Animal2(int age){this.age = age;System.out.println("Animal类构造方法执行了");}
}//子类——狗
class Dog2 extends Animal2{public int age =20;public void eat(){System.out.println("狗具有吃骨头的能力");}public Dog2(int age){super(age);//显式调用父类(动物)的有参数构造方法System.out.println("Dog类构造方法执行了");}
}
``

更多推荐

super

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

发布评论

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

>www.elefans.com

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