Java之类的继承

继承在面向对象开发思想中是一个非常重要的概念,它使整个程序框架具有一定的弹性,在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性。

其基本思想是基于某个父类的扩展,制定出一个新的子类,子类可以继承父类原有的属性和方法,也可以增加原本父类所不具备的属性和方法,或者直接重写父类中的某些方法。

在下列示例中,分别创建Test类和Test2类,在Test类中编写成员方法doSomething()和doIt(),使Test2类继承Test类,重写父类的这两个方法和构造方法,并新增doSomethingnew()方法。其中Test2类的构造方法中使用super关键字调用父类的构造方法和成员方法等:

class Test {
	public Test() {					//构造方法
		//SomSentence
	}
	protected void doSomething() {	//成员方法
		//SomSentence
	}
	protected Test dolt() {			//方法返回值类型为Test类型
		return new Test();
	}
}

class Test2 extends Test{			//继承父类
	public Test2() {				//构造方法
		super();					//调用父类构造方法
		super.doSomething();		//调用父类成员方法
	}
	
	public void doSomethingnew() {	//新增方法
		//SomeSentence
	}
	
	public void doSomething() {		//重写父类方法
		//SomeNewSentence
	}
	
	protected Test2 dolt() {		//重写父类方法,方法返回值类型为Test2类型
		return new Test2();
	}
}

注意:当重写父类方法时,修改方法的修饰权限只能从小的范围到大的范围改变。

 

在Java中一切都以对象的形式进行处理,在继承的机制中,创建一个子类对象,将包含一个父类子对象,这个对象与父类创建的对象是一样的。两者的区别在于后者来自外部,而前者来自子类对象的内部。在实例化对象时,Java编译器会在子类的构造方法中自动调用父类的无参构造方法,示例如下:

class Parent{								    //父类
	Parent(){
		System.out.println("调用父类的parent()构造方法");
	}
}

class SubParent extends Parent{				    //继承Parent类
	SubParent(){
		System.out.println("调用子类的SubParent()构造方法");
	}
}

public class Subroutine extends SubParent{	    //继承SubParent类
	Subroutine() {
		System.out.println("调用子类的Subroutine()构造方法");
	}
	public static void main(String args[]) {
		Subroutine s = new Subroutine();		//实例化子类对象
	}
}
/*输出结果如下:
调用父类的parent()构造方法
调用子类的SubParent()构造方法
调用子类的Subroutine()构造方法
*/
发布了61 篇原创文章 · 获赞 1 · 访问量 1350

猜你喜欢

转载自blog.csdn.net/qq_29440983/article/details/103486918