Java中super 关键字是什么?用来干什么?

您所在的位置:网站首页 简述this和super的用法 Java中super 关键字是什么?用来干什么?

Java中super 关键字是什么?用来干什么?

2024-01-07 17:10| 来源: 网络整理| 查看: 265

super 关键字 含义

super : 超级的 含义: 在Java中代表当前对象的 直接父类对象的引用

用法分类

super. super(实际参数)

1、super(实际参数)

super():代表调⽤⽗类⽆参的构造 super(参数):调⽤⽗类有参的构造

作用: 在⼦类构造⽅法中调⽤⽗类的构造⽅法

特点: 1.如果⼦类构造⽅法中的第⼀⾏没有this()或者this(参数),也不是super(参数) 默认是 super(),构造⽅法的第⼀⾏不是this(...)就是super(...) 2.super()和super(参数)只能在构造⽅法的第⼀⾏

注意: super()和super(参数)只能⽤在⼦类的构造⽅法中

案例: package com.ujiuye.day09; public class Demo10 { public static void main(String[] args) { //Sub sub = new Sub(); Sub sub = new Sub(10,20); // 在定义一个类的时候 如果已经定义了有参构造 在开发中一般要将无参数的构造方法补出来 } } // 定义一个父类 class Super{ int a; int b; //将构造 public Super(){ System.out.println("我是父类无参数的构造方法"); } public Super(int a, int b) { System.out.println("我是父类有参数的构造方法"); this.a = a; this.b = b; } } //定义一个子类 class Sub extends Super{ int c; int d; //构造方法 public Sub(){ super(11,22); System.out.println("我是子类的无参数的构造方法"); } public Sub(int c, int d) { super(11,22); System.out.println("我是子类的有参数的构造方法"); this.c = c; this.d = d; } } 案例2: package com.ujiuye.day09; public class Demo10 { public static void main(String[] args) { //Sub sub = new Sub(); Sub sub = new Sub(10,20); // 在定义一个类的时候 如果已经定义了有参构造 在开发中一般要将无参数的构造方法补出来 } } // 定义一个父类 class Super{ int a; int b; //将构造 public Super(){ System.out.println("我是父类无参数的构造方法"); } public Super(int a, int b) { System.out.println("我是父类有参数的构造方法"); this.a = a; this.b = b; } } //定义一个子类 class Sub extends Super{ int c; int d; //构造方法 public Sub(){ super(); System.out.println("我是子类的无参数的构造方法"); } public Sub(int c, int d) { this(); System.out.println("我是子类的有参数的构造方法"); this.c = c; this.d = d; } } 案例3: package com.ujiuye.day09; public class Demo10 { public static void main(String[] args) { //Sub sub = new Sub(); Sub sub = new Sub(10,20); // 在定义一个类的时候 如果已经定义了有参构造 在开发中一般要将无参数的构造方法补出来 } } class YeYe{ public YeYe(){ System.out.println("我是yeye的构造方法"); } } // 定义一个父类 class Super extends YeYe{ int a; int b; //将构造 public Super(){ super(); System.out.println("我是父类无参数的构造方法"); } public Super(int a, int b) { System.out.println("我是父类有参数的构造方法"); this.a = a; this.b = b; } } //定义一个子类 class Sub extends Super{ int c; int d; //构造方法 public Sub(){ super(); System.out.println("我是子类的无参数的构造方法"); } public Sub(int c, int d) { this(); System.out.println("我是子类的有参数的构造方法"); this.c = c; this.d = d; } } 2、super .

作用: 区分 直接父类中和子类中重名的成员(成员变量和成员方法)

案例: package com.ujiuye.day09; public class Demo10 { public static void main(String[] args) { Sub sub = new Sub(); sub.m(); } } class YeYe{ int b = 1; } // 定义一个父类 class Super extends YeYe{ int b = 10; public int m1(){ return super.b; } } //定义一个子类 class Sub extends Super{// sub中有3个 b 成员变量 int b = 20; public void m(){ int b = 30; //System.out.println(b); //System.out.println(this.b); System.out.println(super.b);//super 指代 当前子类的直接父类对象的引用 System.out.println(super.b); int i = m1(); System.out.println(i); } } 案例2: package com.ujiuye.day09; public class Demo10 { public static void main(String[] args) { Sub sub = new Sub(); sub.m2(); } } // 定义一个父类 class Super{ public void m1(){ System.out.println("我是父类中的m1方法"); } } //定义一个子类 class Sub extends Super{// sub中有3个 b 成员变量 @Override public void m1(){ System.out.println("我是子类重写父类的m1方法"); } public void m2(){ //this.m1();//this.m1() super.m1(); } } 总结

super: 当前类的直接父类对象的引用

1、super(实际参数):在子类的构造方法中 调用父类的构造方法 注意: 1. 只能用在构造方法中 2. 只能是构造方法的第一条有效语句 3. 如果一个构造方法的第一行不是 this() / this(实参) / super(实参),默认是super() 2、super. : 当子类中存在和父类同名的成员变量,需要使用super 指定父类的重名的成员变量.


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3