1. 程式人生 > >JAVA基礎知識之面向物件

JAVA基礎知識之面向物件

本文章主要簡單講述了類的定義,物件的建立與使用,類的封裝,構造方法,內部類,類的繼承,介面與異常處理等知識。

1,類的定義 && 物件的建立與使用 && 類的封裝

a,類的定義:

class Person{

             int age=10;             //類中定義的變數叫成員變數

             void speak(){         //定義成員方法

                     int  age=60;//方法定義的變數叫區域性變數 

                     System.out.println("大家好,我今年“+age+”歲“);

               }

^*^:上述程式碼輸出的是10,而不是60

b,物件的建立與使用:(java程式使用new關鍵字建立物件)

建立:  類名  物件名稱 = new 類名();  使用:  物件引用.物件成員

example 01(物件的建立與使用)

public class Hello{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person p1 = new Person();	//建立第一個person物件
		Person p2 = new Person();	//建立第二個person物件
		p1.age = 18;			//為age屬性賦值
		p1.speak();			//呼叫物件的方法
		p2.speak();
	}
}

class Person{
	int age;
	void speak(){
		System.out.println("大家好,我今年"+age+"歲!");
	}
}

c,類的封裝:

           所謂類的封裝是指在一個類中,將類中的屬性私有化,即使用private關鍵字來修飾,私有屬性只能在它所在的類中被訪問。為了能讓外界訪問私有屬性,需要提供一些使用public修飾的方法【獲取屬性值的getxxx()方法和設定屬性值的setxxx()方法】

example 02(類的封裝)

public class Hello{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student stu = new Student();
		stu.setAge(-30);
		stu.setName("小明");
		stu.introduce();
	}
}

class Student{
	private String name;					//將name私有屬性化
	private int age;						//將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+"歲!");
	}
}

2,構造方法:

       定義:滿足3個條件的方法   a【方法名與類名相同】;

                                                        b【在方法名前面沒有返回值型別的宣告】;

                                                        c【在方法中不能使用return語句返回一個值】。

example 03(定義無參的構造方法)

public class Hello{
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person p = new Person();
	}
}

class Person{
	public Person(){
		System.out.println("無參的構造方法被呼叫了……");
	}
}

example 04 (定義有參的構造方法)

public class Hello{
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person p = new Person(20);
		p.speak();
	}
}

class Person{
	int age;
	public Person(int a){
		age = a;
	}
	public void speak(){
		System.out.println("I am "+age+"years old.");
	}
}

*^*:構造方法與普通方法一樣支援過載。

3,內部類:(成員內部類 && 靜態內部類 && 方法內部類)

    a,成員內部類:在一個類中定義的類,在成員內部類中可以訪問外部類的所有成員。

example 05(成員內部類)

public class Hello{
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Outer outer = new Outer();
		outer.test();
	}
}

class Outer{
	private int num = 4;//定義類的成員變數
	//定義了一個成員方法,方法中訪問內部類
	public void test(){
		Inner inner = new Inner();
		inner.show();
	}
	//定義了一個成員內部類
	class Inner{
		void show(){
			//訪問外部類的成員變數
			System.out.println("num="+num);
		}
	}
}

   b,方法內部類(在成員方法中定義一個類,它只能在當前方法中被使用)

example 06(方法內部類)

public class Hello{
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Outer outer = new Outer();
		outer.test();
	}
}

class Outer{
	private int num = 4;//定義類的成員變數
	
	public void test(){
		//在方法中定義類
		class Inner{
			void show(){		
				System.out.println("num="+num);
			}
		}
		Inner inner = new Inner();//建立內部類物件
		inner.show();//呼叫內部類方法
	}
}

4,類的繼承(【extends關鍵字】子類會自動擁有父類所有可繼承的屬性和方法

example 07(類的繼承)

public class Hello{
	/**
	 * @param args
	 */
	public static void main(String[] args) {
	Dog dog = new Dog();
	dog.name = "哈士奇";
	dog.printName();
	dog.shot();
	}
}

class Animal{
	String name;
	void shot(){
		System.out.println("動物發出叫聲!");
	}
}

class Dog extends Animal{
	public void printName(){
		System.out.println("name="+name);
	}
}

注意*^*:1,【一個類只能有一個直接父類】2,【多個類可以繼承一個父類】3,【允許多層繼承】

5,介面 (interface  &&  implement

example 08(介面)

public class Hello{
	/**
	 * @param args
	 */
	public static void main(String[] args) {
	Dog dog = new Dog() {
	};
	dog.breathe();
	dog.run();
	dog.liveOnland();
	System.out.println(Animal.ID);
	}
}
//定義了Animal介面
interface Animal{
	//定義全域性變數
	int ID = 1;
	//定義3個抽象方法
	void breathe();
	void run();
	void liveOnland();
}

abstract class Dog implements Animal{
	public void breathe(){
		System.out.println("狗在呼吸!");
	}
	
	public void run(){
		System.out.println("狗在跑!");
	}
	
	public void liveOnland(){
		System.out.println("狗生活在陸地上!");
	}
}

6,異常處理(try……catch && finally

example 09(異常處理)

public class Hello{
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try{
			int result = divide(4, 0);
			System.out.println(result);
		}catch(Exception e){
			System.out.println("捕獲的異常資訊為:"+e.getMessage());
			return;//用於結束當前語句
		}finally{
			System.out.println("進入finally程式碼塊!");
		}
		System.out.println("程式繼續進行下去……");
	}


public static int divide(int x,int y){
	int result = x/y;
	return result;
   }
}