1. 程式人生 > >從封裝性,繼承性,多型性來認識面向物件

從封裝性,繼承性,多型性來認識面向物件

一,類的封裝是指在定義一個類時,將類中的屬性私有化,即使用private關鍵字來修飾,私有屬性只能在它所在類中被訪問。一般需要獲取屬性值的方法和設定屬性值的方法來讓外界訪問私有屬性。

package encapsulation;

class Student {
	private String name;
	private int age; // 將類的屬性私有化
	// 下面是公有的方法

	public String getName() {
		return name;
	}

	public void setName(String stuName) {
		name = stuName;
	}

	public int getAge() { // 獲取屬性值
		return age;
	}

	public void setAge(int stuAge) { // 設定屬性值
		if (stuAge <= 0) {
			System.out.println("年齡不合法。。。。");
		} else {
			age = stuAge; // 對屬性賦值
		}
	}

	public void introduce() {
		System.out.println("大家好,我叫" + name + ",我今年" + age + "歲!");
	}
}

public class class_encapsulate {
	public static void main(String[] args) {
		Student stu = new Student(); // 建立學生物件
		stu.setAge(-30);
		stu.setName("李芳");
		stu.introduce();
	}
}

二、類的繼承是指在一個現有類的基礎上去構建一個新的類,新類被稱作子類,現有類被稱作父類,子類會自動擁有父類所有可繼承的屬性和方法。 

package inherit;
class Animal{
	String name;
	//定義動物叫的方法
	void shout(){
		System.out.println("動物發出叫聲");
	}
}
//定義dog類繼承animal類
class Dog extends Animal {
	//定義一個列印name的方法
	public void printName(){
		System.out.println("name="+name);
	}
}
public class Example1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Dog dog =new Dog();         //建立一個Dog類的例項物件
        dog.name="沙皮狗";           //為Dog類的name屬性進行賦值
        dog.printName();           //呼叫Dog類的方法
        dog.shout();              //呼叫Dog類繼承的方法
	}

}

三、在同一個方法中,這種由於引數不同而導致執行效果各異的現象就是多型。 

package polymorphic;
//定義介面
interface Animal{
	void shout();
}
//定義類實現介面
class Cat implements Animal{
	public void shout(){
		System.out.println("喵喵。。。。");
	}
}
//定義另一個類實現介面
class Dog implements Animal{
	public void shout(){
		System.out.println("汪汪。。。。");
	}
}
public class Example1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
         Animal an1=new Cat();   //建立Cat物件,使用Animal型別的an1引用
         Animal an2=new Dog();   //建立Dog物件,使用Animal型別的an2引用
         animalShout(an1);       //呼叫 animalShout方法,將an1作為引數傳入
         animalShout(an2);       //呼叫 animalShout方法,將an2作為引數傳入
	}
	//定義靜態的方法,接受一個Animal型別的引數
	public static void animalShout(Animal an){
		 an.shout();            //呼叫實際引數的方法
	}

}

歡迎博友來踩!