1. 程式人生 > >java面向物件學習相關簡要筆記(3)

java面向物件學習相關簡要筆記(3)

抽象類: 具體例項: abstract void shout(); //定義抽象方法shout() abstract class Animal //定義抽象類 Animal { } 1、在定義抽象類時要注意包含抽象方法的類必須為抽象類,但抽象類可以不包含任何抽象方法,只需要使用abstract關鍵字來修飾即可。 2、抽象類不可以被例項化的。 3、如果想呼叫抽象類中定義的方法,則需要建立一個子類,在子類中將抽象類中的抽象方法實現。 如:

abstract class Animal{
	abstract void shout();
}
class Dog extends Animal{
	void shout(){
		System.out.println("汪汪....");
	}
}
public class example2{
	
	public static void main(String[] args){
		Dog dog=new Dog();
		dog.shout();
		
	}
}

在這裡插入圖片描述 介面:如果一個抽象類中所有方法都是抽象的,則可以將這個類用另外一種方式定義。在定義介面時,使用interface關鍵字宣告。、 如:

interface Animal{
	int ID=1;
	void breath();
}
class Dog implements Animal{
	public void breath(){
		System.out.println("狗在呼吸");
	}
	public void run(){
		System.out.println("狗在跑");
	}
}
public class example2{
	
	public static void main(String[] args){
	Dog dog=new Dog();
	dog.breath();
	dog.run();
	}
}

在這裡插入圖片描述 此外介面可以繼承另一個介面

interface Animal{
	int ID=1;
	void breath();
	void run();
}
interface LandAnimal extends Animal{
	void LiveOnland();
	}
class Dog implements LandAnimal{
	public void breath(){
		System.out.println("狗在呼吸");
	}
	public void run(){
		System.out.println("狗在跑");
	}
	public void LiveOnland(){
		System.out.println("狗生活在陸地上");
	}
}
public class example2{
	
	public static void main(String[] args){
	Dog dog=new Dog();
	dog.breath();
	dog.run();
	dog.LiveOnland();
	}
}

在這裡插入圖片描述 介面歸納: 1、介面中的方法都是抽象的,不能例項化物件。 2、當一個類實現介面時,如果這個類時抽象類,則實現介面中的部分方法即可,否則要實現介面中所有的方法。 3、一個類通過implements關鍵字實現介面時,可以實現多個介面,被實現的多個介面之間要用逗號隔開。具體例項如下:

iinterface Run{
程式程式碼......
}
interface Fly{
程式程式碼......
}
class Brid implementsj Run,Fly{
程式程式碼.......
}

4、一個介面可以通過extends關鍵字繼承多個介面,介面之間用逗號隔開。例如下:

interface Running{
程式程式碼.....
}
interfacce Flying{
程式程式碼.......
}
Interface Eating extends Running,Flying{
程式程式碼......
}

5、一個類在繼承另一個類的同時還可以實現介面,此時,extends關鍵字必須位於implements關鍵字之前。示例如下:

class Dog extends Canidae implements Animal{        //先繼承,再實現
程式程式碼......
}

多型:

在設計一個方法時,通常希望該方法具備一定的通用性。例如要實現一個動物叫的方法,由於每種動物的叫聲是不同的,因此可以在方法中接收一個動物型別的引數,當傳入貓類物件時就發出犬類的叫聲。在同一個方法中,這種由於引數型別不同而導致執行效果各異的現象就是多型。示例如下:

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 example2{
	
	public static void main(String[] args){
	Animal an1=new Cat();
	Animal an2=new Dog();
	animalShout(an1);
	animalShout(an2);
	}
	public static void animalShout(Animal an){
		an.shout();
	}
}

在這裡插入圖片描述 當兩個子類呼叫animalShout()方法時,將父類引用的兩個子類物件分別傳入,結果打印出了不同動物叫聲。 多型中涉及到將子類物件當作父類型別使用的情況: Animal an1=new Cat(); //將Cat物件當作Animal型別來使用 Animal an2=new Dog(); //將Dog物件當作Animal型別來使用 強制型別轉換: Cat cat=(Cat) animal; //將animal物件轉換成Cat型別 例項如下:

interface Animal{
void shout();
}
class Cat implements Animal{
	public void shout(){
		System.out.println("喵喵.....");
	}
	public void sleep(){
		System.out.println("貓在睡覺....");
	}
}


public class example2{
	
	public static void main(String[] args){
     Cat cat=new Cat();
     animalShout(cat);
	}
	public static void animalShout(Animal an){
		Cat cat=(Cat) an;                 //將Animal物件強制轉換成Cat型別
		cat.shout();
		cat.sleep();
	}
}

在這裡插入圖片描述 Object類: 它是所有類的父類,即每個類都直接或間接繼承該類。示例如下:

class Animal{
	void shout(){
		System.out.println("動物叫....");
	}
}


public class example2{
	
	public static void main(String[] args){
     Animal animal=new Animal();
     System.out.println(animal.toString());
	}

}

在這裡插入圖片描述 雖然Animal類並沒有定義toString()方法,但程式沒有報錯。這是因為Animal預設繼承自Object類中定義的方法。但在實際開發過程中,通常希望物件的toString()方法返回的不僅僅是基本資訊,而是一些有用的資訊,這時重寫Object的toString()方法便可以實現。示例如下:

class Animal{
public String toString(){
	return "I'm an animal";
}
}


public class example2{
	
	public static void main(String[] args){
     Animal animal=new Animal();
     System.out.println(animal.toString());
	}

}

在這裡插入圖片描述