java---繼承

1.    概念:將這些類的共性內容,抽取到一個獨立的類中,讓獨立的類的多個類產生一種關係

2.    格式:class Zi extends Fu{}

3.    好處:1).提高了代碼的複用性和維護性

2).類與類之間產生了關係:耦合性,這種關係是多態的前提條件

4.    Java開發的原則:高內聚,低耦合

5.    繼承的特點:

a)    java中,只支持單繼承,不支持多繼承

b)    但可以多層繼承

6.    子類繼承父類, 只能繼承父類中非私有的成員(成員變量/成員方法),不能繼承父類的構造方法,但可以通過super()間接訪問

7.    什麼情況下使用繼承?

A類是B類的一種,或者B類是A類的一種,則可以是繼承關係

8.    super()關鍵字:表示父類的一個空間標識(簡單記:代表父類的對象)

9.    this與super的區別:

a)    位置不同:

               i.         this.成員變量:訪問本類的成員變量;

              ii.         super.成員變量:訪問父類的成員變量

b)    成員方法:

               i.         this.成員方法:本類的成員方法

              ii.         super.成員方法:父類的成員方法

c)    構造方法:

               i.         this()/this(“”):訪問當前類的構造方法

              ii.         super()/super(“”):訪問父類的構造方法

10.  子類繼承父類,會默認訪問父類的無參構造方法,如果父類沒有無參構造,則子類構造方法全部報錯,解決方法:

a)    手動給出父類的無參構造

b)    子類的構造方法(有參或者無參)的第一句話:super(“傳參”),通過父類的有參構造間接訪問

c)    子類的(有參構造)第一句話:this(),間接訪問父類的有參構造.

繼承的相關程序

1.代碼塊的執行順序

class Fu4 {
	static {
		System.out.println("靜態代碼塊Fu");
	}
	{
		System.out.println("構造代碼塊Fu");
	}
	public Fu4() {
		System.out.println("構造方法Fu");
	}
}
class Zi4 extends Fu4 {
	static {
		System.out.println("靜態代碼塊Zi");
	}
	{
		System.out.println("構造代碼塊Zi");
	}
	public Zi4() {
		System.out.println("構造方法Zi");
	}
}
public class ExtendsTest2 {
	public static void main(String[] args) {
		Zi4 z = new Zi4();
	}
}
執行結果:
靜態代碼塊Fu
靜態代碼塊Zi
構造代碼塊Fu
構造方法Fu
構造代碼塊Zi
構造方法Zi
2.老師和學生的繼承

package 繼承與面向對象;
/*老師和學生的共同屬性是姓名,年齡(成員變量)
 *		賦值方式set()
 * 成員方法:我愛Java
 * */
class Student{
	//私有化成員變量
	private String name;
	private int age;
	//成員變量賦值:set()-get()方式
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	//成員方法
	public void show(Student s){
		System.out.println("姓名:"+s.getName()+",年齡:"+s.getAge());
	}
	public void show2(){
		System.out.println("我愛Java");
	}
}
//繼承關係,老師繼承學生
class Teacter extends Student{}
public class StudentTeacter {
public static void main(String[] args) {
	//創建對象1
	Student s=new Student();
	//成員變量賦值
	s.setName("A");
	s.setAge(20);
	//調用成員方法
	s.show(s);
	s.show2();
	//創建對象2
	Teacter t=new Teacter();
	//成員變量賦值
	t.setName("B");
	t.setAge(30);
	//調用成員方法
	t.show(t);
	t.show2();
}
}
執行結果:

姓名:A,年齡:20
我愛Java
姓名:B,年齡:30
我愛Java
3.中國四大美女

/*利用static,減少代碼*
 */
class Person{
	String name;
	int age;
	static String country;
	//變量輸入姓名,年齡
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	//變量輸入姓名,年齡,國籍
	public Person(String name, int age,String country ) {
		super();
		this.name = name;
		this.age = age;
		this.country=country;
	}
	public void show(){
		System.out.println("姓名是:"+name+"年齡是:"+age+"國籍是:"+country);
	}
}
public class PersonDemo {
public static void main(String[] args) {
	Person p1=new Person("西施",23,"中國");
	p1.show();
	Person p2=new Person("貂蟬",23);
	p2.show();
	Person p3=new Person("楊貴妃",24);
	p3.show();
	Person p4=new Person("王昭君",25);
	System.out.println("......................");
	p1.country="美國";
	p1.show();
	p2.show();
	p3.show();
	
	
}
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章