继承中的构造方法——super关键字
TestSuperSub.java
//继承中的构造方法——super关键字 class SuperClass { private int n; SuperClass() { System.out.println("父类无参构造方法SuperClass()"); } SuperClass(int n) { System.out.println("父类有参构造方法SuperClass(" + n + ")"); this.n = n; } } class SubClass extends SuperClass { private int n; //子类的构造过程必须调用其父类(基类)的构造方法 SubClass(int n) { /* 如果调用super必须写在子类构造方法的第一行 如果子类的构造方法中没有显示的调用父类的构造方法,则默认调用基类的无参构造方法 如果子类的构造方法中既没有显示调用父类的构造方法,父类也没有无参构造方法,则编译出错 */ //super(); System.out.println("子类有参构造方法SubClass(" + n + ")"); this.n = n; } SubClass() { super(300); System.out.println("子类无参构造方法SubClass()"); } } public class TestSuperSub { public static void main(String arg[]) { //SubClass sc1 = new SubClass(); SubClass sc2 = new SubClass(400); } }
构造方法和一般成员方法在继承中的区别
Sub.java
//构造方法和一般成员方法在继承中的区别 class A { protected void print(String str) { System.out.println(str); } A(){ print("A()"); } public void f() { print("A:f()"); } } class B extends A { B(){ print("B()"); } //重写A中的f() public void f() { print("B:f()");j } } public class Sub { public static void main(String[] args) { B b = new B(); b.f(); /* 结果: A() B() B:f() 分析结果,体会构造方法和一般成员方法在继承中的区别 */ } }
简单的练习,使用super关键字,以及继承中的构造方法,方法的重写Override
TestPer.java
//简单的练习,使用super关键字,以及继承中的构造方法,方法的重写Override class Person { private String name; //姓名 private String location; //地址 Person(String name) { this.name = name; location = "北京"; } Person(String name, String location){ this.name = name; this.location = location; } public String info() { return "name: " + name + ";location: " + location; } } class Student extends Person { private String school; //学校 Student(String name, String school) { this(name,"北京",school); } Student(String n, String l, String s) { super(n,l); this.school = s; } //重写Override info()方法 public String info() { return super.info() + ";school: " + school; } } class Teacher extends Person { private String capital; //职称 Teacher(String name, String capital) { this(name, "广州", capital); } Teacher(String n, String l, String capital) { super(n, l); this.capital = capital; } public String info() { return super.info() + ";capital: " + capital; } } public class TestPer { public static void main(String[] args) { Person p1 = new Person("A"); Person p2 = new Person("B","上海"); Student s1 = new Student("C","第一实验小学"); Student s2 = new Student("D","武汉","第二实验小学"); System.out.println(p1.info()); //name: A;location: 北京 System.out.println(p2.info()); //name: B;location: 上海 System.out.println(s1.info()); //name: C;location: 北京;school: 第一实验小学 System.out.println(s2.info()); //name: D;location: 武汉;school: 第二实验小学 Teacher t1 = new Teacher("E", "教授"); System.out.println(t1.info()); //name: E;location: 广州;capital: 教授 } }
相关推荐
如果我们想在子类的构造函数中使用 super,但是没有放在第一行,那么在 super 之前的语句肯定是为了满足自己想要完成某些行为的语句,但是又用了 super 继承父类的构造方法。那么以前所做的修改就都回到以前了,就是...
本篇文章将深入探讨`super`关键字的使用方法,包括其在构造函数、方法调用以及字段访问中的应用。 ### 1. 构造函数调用 当子类继承父类时,有时候我们需要在子类的构造函数中调用父类的构造函数。Java中的`super`...
1. **构造器与super关键字**:在子类的构造器中,可以通过`super()`语句来调用父类的构造器,确保父类的状态在子类对象创建时得到初始化。这是Java强制子类构造器必须首先调用父类构造器的原因,除非父类有默认无参...
在Java中,子类继承父类时,需要使用super关键字来调用父类的构造方法、属性和方法。本文将通过实战案例,详细介绍Java super关键字的用法和注意事项。 一、super关键字的用法 在Java中,super关键字用于访问父类...
理解this与super关键字的用法有助于程序员编写出更加规范、严谨的代码,并能够有效管理继承体系中类的属性和方法,避免歧义和错误。 在Java编程实践中,正确运用this与super关键字,可以提高代码的可读性和可维护性...
在Java子类中,super关键字可以用来调用父类的构造方法、成员变量和方法,或者访问父类中的成员变量和方法。下面是Java super关键字的使用方法详解: 一、super关键字在构造方法中的使用 在Java子类的构造方法中,...
总结起来,`super`关键字在Java中扮演着连接子类和父类的关键角色,它使得我们可以方便地调用父类的构造器、成员变量和方法。理解并合理使用`super`是学习Java多态和继承的重要部分。如果你在实际使用中遇到问题或对...
在实际应用中,`super`关键字通常用于初始化继承的属性和调用父类的方法。下面是一个更实际的例子,展示了如何在子类构造函数中使用`super`来初始化父类的属性: ```java class Person { String name; Person...
### 类继承构造方法super()调用解析 在Java编程语言中,类的继承是一个非常重要的概念,它允许我们创建一个新类(子类)来继承现有类(父类)的属性和方法。本文将深入探讨Java中如何通过`super()`关键字来调用父类...
在Java编程语言中,"super"关键字是一个非常重要的概念,它在类的继承关系中扮演着关键角色。本文将深入探讨"super"关键字的几点应用,以帮助开发者更好地理解和利用这个功能。 首先,"super"关键字用于引用父类的...
在实际编程中,方法重写和`super`关键字的运用是非常常见的。例如,设计一个动物类(Animal)作为父类,拥有一个`sound()`方法,然后创建狗(Dog)和猫(Cat)两个子类,分别重写`sound()`方法,让它们发出不同的...
Java 中的继承(子类调用父类构造方法还不懂) Java 中的继承是指一个类可以继承另一个类的属性和方法,这样可以实现代码的复用和提高开发效率。在 Java 中,继承使用关键字 `extends` 来实现。 Java 中继承的注意...
总结来说,`super` 关键字是 Java 继承机制中的一个重要工具,它使得子类能够访问和调用父类的构造函数、方法和字段,从而实现代码复用和扩展。在编写 Java 代码时,理解并正确使用 `super` 关键字对于有效地利用...
举例1:在`Person`类中定义了`eat()`和`sleep()`方法,`Student`类继承`Person`并重写了这两个方法。在`StudentTest`类中创建`Student`对象时,直接调用`eat()`和`sleep()`将执行子类的重写方法。如果要在子类中调用...
定义抽象类以及抽象方法,构造方法,将子类1定义为抽象类,子类2继承子类1,子类2重写抽象方法。用以帮助理解多重继承、抽象方法重写调用、super、this关键字使用、构造方法、重载这几个的知识点
4. 子类不能继承父类的构造方法,但是可以继承构造方法类的参数。 5. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。但子类不能继承父类private修饰的属性和方法。 继承的示例 下面是一个简单的继承...
深入浅析ES6 Class 中的 super ...在实践中,super 可以帮助我们更好地继承和使用父类的方法和属性。 本文对 ES6 Class 中的 super 关键字进行了详细的介绍,希望能够对读者有所帮助。如果您有任何疑问,请随时留言。
在Java编程语言中,`this`和`super`是两个非常重要的关键字,它们在类的继承和对象引用中起着至关重要的作用。本篇将详细阐述这两个关键字的含义、用法以及它们之间的区别。 首先,`this`关键字代表当前对象的引用...
在Java编程语言中,`...总的来说,`super`关键字是Java中实现多态性和继承的关键,它允许子类继承并扩展父类的功能,同时保留父类的原有行为。理解并正确使用`super`可以帮助开发者更好地理解和设计面向对象的程序。