面向对象(一)

一.继承的引入

//定义一个学生类
class Student{
 
 private String name ;
 priate String age ;
 ...
 
 public Student(){}
 //有参..
 
 //SetterXXX/GetterXXX(){
  ..
 }
}
//定义一个老师类
class Teacher{
 private String name ;
 private String age ;
 
 //无参/有参...
 //SetterXXX/GetterXXX(){
  ..
 }
}
//观察这两个类代码,有共同的内容,对应提供了公共 无参,.公共访问方法
上述这种做法非常麻烦,代码会显得非常臃肿,所有需要对它的访问方法,无参/有参构造...

将多个类共性内容,抽取一个独立的类,只需要让这个独立的类和多个类产生一种关系:Java提供继承
语法规定:
class 父类{
		}
		
		class 子类  extends 父类{ //子类继承了父类
			
		}
		
		//改进上面的代码
		//定义一个人类
		class Person{
			private String name ;
			private String age ;
			//无参/有参...
			
			//SetterXXX/GetterXXX(){
			..
			}
		}
		
		
		class Student extends Person{}
		class Teacher extends Person{}
		
		......		 extends Person{}
		
		

二、继承的概念

继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

在Java之中,如果要实现继承的关系,可以使用如下的语法:

class 子类 extends 父类 {}
  • 1

子类又被称为派生类; 父类又被称为超类(Super Class)。
子类即使不扩充父类,也能维持父类的操作。

三、继承的限制

虽然继承可以进行类功能的扩充,但是其在定义的时候也是会存在若干种限制的。

1.一个子类只能够继承一个父类,存在单继承局限。
错误的写法:

class A {}
class B {}
class C extends A,B {}          // 一个子类继承了两个父类

以上操作称为多重继承,实际上以上的做法就是希望一个子类,可以同时继承多个类的功能,但是以上的语法不支持而已,但是可以换种方式完成同样的操作。

正确的写法:

class A {}
class B extends A {}
class C extends B {}

C实际上是属于(孙)子类,这样一来就相当于B类继承了A类的全部方法,而C类又继承了A和B类的方法,这种操作称为多层继承。

结论:Java之中只允许多层继承,不允许多重继承,Java存在单继承局限

2.在一个子类继承的时候,实际上会继承父类之中的所有操作(属性、方法),但是需要注意的是,对于所有的非私有(no private)操作属于显式继承(可以直接利用对象操作),而所有的私有操作属于隐式继承(间接完成)。

3 :在继承关系之中,如果要实例化子类对象,会默认先调用父类构造,为父类之中的属性初始化,之后再调用子类构造,为子类之中的属性初始化,即:默认情况下,子类会找到父类之中的无参构造方法
 
 

四.练习题
package org.westos.继承_01;


/**
 * 看程序,写结果:
 * 	子类继续父类,父类先进行初始化,然后子类进行初始化,这就是继承中分层初始化
 * 	类名 对象名  = new 类名() ; 这句话,创建了对象,通过构造方法进行初始化(默认初始化,显示初始化)
 * 
 * @author Administrator
 *
 */
class X {
	Y b = new Y();
	X() {
		System.out.print("X");//x
	}
}

class Y {
	Y() {
		System.out.print("Y");  //y
	}
}

public class Z extends X {
	Y y = new Y();
	Z() {
//		super() ; //这个第一句话super(),this(),默认都在一句话,可以省略....
		System.out.print("Z");
		
	}
	public static void main(String[] args) {
		new Z(); 
	}
}

猜你喜欢

转载自blog.csdn.net/fnwibwj/article/details/79996941