`
i拾贝
  • 浏览: 29969 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

继承中的构造方法和super关键字

    博客分类:
  • java
阅读更多

继承中的构造方法——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: 教授
	
	}
}

 

 

 

 

 

分享到:
评论

相关推荐

    java中super关键字的三种用法

    如果我们想在子类的构造函数中使用 super,但是没有放在第一行,那么在 super 之前的语句肯定是为了满足自己想要完成某些行为的语句,但是又用了 super 继承父类的构造方法。那么以前所做的修改就都回到以前了,就是...

    Java super关键字使用

    本篇文章将深入探讨`super`关键字的使用方法,包括其在构造函数、方法调用以及字段访问中的应用。 ### 1. 构造函数调用 当子类继承父类时,有时候我们需要在子类的构造函数中调用父类的构造函数。Java中的`super`...

    java中带super关键字的程序内存分析

    1. **构造器与super关键字**:在子类的构造器中,可以通过`super()`语句来调用父类的构造器,确保父类的状态在子类对象创建时得到初始化。这是Java强制子类构造器必须首先调用父类构造器的原因,除非父类有默认无参...

    Java super关键字用法实战案例分析

    在Java中,子类继承父类时,需要使用super关键字来调用父类的构造方法、属性和方法。本文将通过实战案例,详细介绍Java super关键字的用法和注意事项。 一、super关键字的用法 在Java中,super关键字用于访问父类...

    Java中this与super关键字的对比使用.pdf

    理解this与super关键字的用法有助于程序员编写出更加规范、严谨的代码,并能够有效管理继承体系中类的属性和方法,避免歧义和错误。 在Java编程实践中,正确运用this与super关键字,可以提高代码的可读性和可维护性...

    Java super关键字的使用方法详解

    在Java子类中,super关键字可以用来调用父类的构造方法、成员变量和方法,或者访问父类中的成员变量和方法。下面是Java super关键字的使用方法详解: 一、super关键字在构造方法中的使用 在Java子类的构造方法中,...

    1.java中super关键字的应用

    总结起来,`super`关键字在Java中扮演着连接子类和父类的关键角色,它使得我们可以方便地调用父类的构造器、成员变量和方法。理解并合理使用`super`是学习Java多态和继承的重要部分。如果你在实际使用中遇到问题或对...

    详解Java super 关键字.pdf

    在实际应用中,`super`关键字通常用于初始化继承的属性和调用父类的方法。下面是一个更实际的例子,展示了如何在子类构造函数中使用`super`来初始化父类的属性: ```java class Person { String name; Person...

    类继承构造方法super()调用可以吃吗

    ### 类继承构造方法super()调用解析 在Java编程语言中,类的继承是一个非常重要的概念,它允许我们创建一个新类(子类)来继承现有类(父类)的属性和方法。本文将深入探讨Java中如何通过`super()`关键字来调用父类...

    Super关键字的几点应用

    在Java编程语言中,"super"关键字是一个非常重要的概念,它在类的继承关系中扮演着关键角色。本文将深入探讨"super"关键字的几点应用,以帮助开发者更好地理解和利用这个功能。 首先,"super"关键字用于引用父类的...

    第05章 面向对象(下) 03 方法重写与super关键字

    在实际编程中,方法重写和`super`关键字的运用是非常常见的。例如,设计一个动物类(Animal)作为父类,拥有一个`sound()`方法,然后创建狗(Dog)和猫(Cat)两个子类,分别重写`sound()`方法,让它们发出不同的...

    java中的继承(子类调用父类构造方法还不懂).doc

    Java 中的继承(子类调用父类构造方法还不懂) Java 中的继承是指一个类可以继承另一个类的属性和方法,这样可以实现代码的复用和提高开发效率。在 Java 中,继承使用关键字 `extends` 来实现。 Java 中继承的注意...

    Java 程序显示 Super 关键字在类中的使用.docx

    总结来说,`super` 关键字是 Java 继承机制中的一个重要工具,它使得子类能够访问和调用父类的构造函数、方法和字段,从而实现代码复用和扩展。在编写 Java 代码时,理解并正确使用 `super` 关键字对于有效地利用...

    Java面向对象(进阶)- super关键字的使用与子类对象实例化全过程

    举例1:在`Person`类中定义了`eat()`和`sleep()`方法,`Student`类继承`Person`并重写了这两个方法。在`StudentTest`类中创建`Student`对象时,直接调用`eat()`和`sleep()`将执行子类的重写方法。如果要在子类中调用...

    AbstractTest.java帮助理解多重继承、抽象方法重写调用、super、this关键字、构造方法、重载知识点

    定义抽象类以及抽象方法,构造方法,将子类1定义为抽象类,子类2继承子类1,子类2重写抽象方法。用以帮助理解多重继承、抽象方法重写调用、super、this关键字使用、构造方法、重载这几个的知识点

    Java继承extends与super关键字详解

    4. 子类不能继承父类的构造方法,但是可以继承构造方法类的参数。 5. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。但子类不能继承父类private修饰的属性和方法。 继承的示例 下面是一个简单的继承...

    深入浅析ES6 Class 中的 super 关键字

    深入浅析ES6 Class 中的 super ...在实践中,super 可以帮助我们更好地继承和使用父类的方法和属性。 本文对 ES6 Class 中的 super 关键字进行了详细的介绍,希望能够对读者有所帮助。如果您有任何疑问,请随时留言。

    Java中this与super关键字的对比使用.zip

    在Java编程语言中,`this`和`super`是两个非常重要的关键字,它们在类的继承和对象引用中起着至关重要的作用。本篇将详细阐述这两个关键字的含义、用法以及它们之间的区别。 首先,`this`关键字代表当前对象的引用...

    java之super关键字用法实例解析

    在Java编程语言中,`...总的来说,`super`关键字是Java中实现多态性和继承的关键,它允许子类继承并扩展父类的功能,同时保留父类的原有行为。理解并正确使用`super`可以帮助开发者更好地理解和设计面向对象的程序。

Global site tag (gtag.js) - Google Analytics