1. 程式人生 > >星期三的收獲

星期三的收獲

boa set ace swe 權限 return auto 類型 系列

1、抽象類:如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。(抽象類用abstract修飾)
①抽象類的語法為:訪問權限 + abstract class 類名;
②抽象類不能被實例化,但可以有構造函數;
③抽象類只能用作基類,表示一種繼承關系。(抽象類的派生子類應該提供對其所有抽象方法的具體實現;如果抽象類的派生子類沒有實現其中的所有抽象方法,那麽該派生子類仍然是抽象類 )
2、抽象方法:在類中沒有方法體的方法,就是抽象方法(抽象方法的語法:訪問權限 abstract 返回值類型 方法名稱(參數列表);)
3、抽象的作用:利用抽象的概念,能夠在開發項目中創建擴展性很好的架構,優化程序。
4、object類:只提到了object類是所有類的父類,位於Java.lang包中。
5、object類中常用的方法:①toString方法:可以將任何一個對象轉換成字符串返回;
②equals的方法:是用來作比較的(比較的是兩個引用的虛地址)
③equals和==的比較:equals比較的是對象的虛地址,而==比較的是內存的虛地址
6、多態性:JAVA中多態的具體體現是方法重載、方法覆蓋、多態參數。
7、多態的參數:方法參數具有多態性,可以提高代碼的擴展性。
8、多態環境下的對象造型:①向上造型(提高程序的擴展性)
②向下造型(為了使用子類中的特有方法)
9、多態環境下對屬性和方法的調用 :①多態環境下對成員方法的調用(編譯看左邊,運行看右邊)
②多態環境下對靜態成員方法的調用(編譯運行都看左邊)
③多態環境下對成員變量的調用(編譯運行都看左邊)
10、instanceof 操作符 :是用來在運行時指出對象是否是特定類的一個實例(語法形式為 對象名稱 instanceof 類型)
11、運行期類型與編譯期類型:①編譯期類型和運行期類型相同
②當有繼承關系時,可能發生編譯期類型和運行期類型不同的情況,即編譯期類型是父類類型,運行期類型是子類類型。
12、接口的基本語法:①Java接口是一系列方法的聲明,是一些抽象的集合 (接口就是特殊的抽象類)
②接口的基本格式:修飾符 interface 接口名
③接口中沒有變量,只有public static final 修飾的靜態常量
13、接口繼承接口的原則:①Java接口可以繼承多個接口
②接口繼承接口依然使用關鍵字extends
14接口繼承與類繼承的區別:①Java類的繼承是單一繼承,Java接口的繼承是多重繼承
②java類對屬性沒有限制,而接口是靜態常量
③JAVA類的構造方法可有可無,接口沒有構造方法
④JAVA類可以有具體方法,接口必須是抽象方法
15、類實現接口:接口定義的是多個類都要實現的操作,即“what to do”。類可以實現接口,從而覆蓋接口中的方法,實現“how to do”

1、下午的練習

package com.chainsoft.lianxi.AM;

public class Xiaolianxi {
	 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		


     Dongwu cat1 = new Cat();
     Dongwu animal = new Dongwu();
     animal.eat();
     cat1.eat();
     cat1.drink();
     cat1.play();
     Dongwu dog1 = new Dog();
     Dongwu animal1 = new Dongwu();
     animal1.drink();
     dog1.eat();
     dog1.drink();
     dog1.play();
     Dongwu yu1 = new Yu();
     Dongwu animal2 = new Dongwu();
     animal2.play();
     yu1.eat();
     yu1.drink();
     yu1.play();
     System.out.println(cat1 instanceof Cat);
     if(cat1 instanceof Dog){
    	 System.out.println("貓的孩子為了復仇,學會了遊泳,吃光所有魚");
     }else{
    	 System.out.println("貓的孩子為了復仇,去學習遊泳,結果貓的孩子沒有學會遊泳,吃不光所有魚");
     }

}
}
class Dongwu
{
	   void eat()
	   {
		   System.out.print("小貓出生了,3年後,小貓可以吃東西了,");
	   }
	   void drink()
	   {
		   System.out.print("一只小狗");
	   }
	   void play()
	   {
		   System.out.print("失落的貓走出了家門,");
	   }
}
 class Cat extends Dongwu{ 
	    Cat(){
	    	 super();
	    }
	 
  	   void eat()	   {
		
		 int a = 3;
		 System.out.print("於是貓吃了"+a+"條魚");
  	   }
  	   void drink()
  	   {
  		   System.out.print(",然後慢慢的添水喝");
 	   }
  	   void play()
  	   {
  		   System.out.println(",吃飽喝足推球玩,");
  	   }
 }
  	 class Dog extends Dongwu
  	 {
		 void eat(){
			 System.out.print("看著推球玩的小貓,跑去追貓咬,");
	  	   }
	  	   void drink(){
	  		   System.out.print("打碎了玻璃,弄亂了房間,");
	  	   }
	  	   void play(){
	  		   System.out.println("主人知道後,把狗栓了起來,把貓趕了出去。");
	  	   }
	 }
	 class Yu extends Dongwu{
		 void eat(){
	  		   System.out.print("看到小河裏自由自在捕食遊玩的小魚,");
	  	   }
	  	   void drink(){
	  		   System.out.print("心生嫉妒於是下河去捕魚,");
	  	   }
	  	   void play(){
	  		   System.out.println("結果自己淹死在了水裏。");
	  	   }   
	  	   }

  輸出結果技術分享

2、多接口的練習

package com.chainsoft.lianxi.AM;
 interface IConnecionManager{                     //創建一個接口1
	 void dial(String phoneNumber);
	 void huangup();
 }
  interface IDataTransfer{                      //創建一個接口2
	  void chat(String req);
	  void answer(String rep);
  }
  class Phone implements IConnecionManager,IDataTransfer{    //繼承兩個接口

	
	public void chat(String req) {
		System.out.println(req);               //實例化接口2方法1
		
	}

	
	public void answer(String rep) {
		                                 
		System.out.println(rep);            // 實例化接口2方法2     
	}


	public void dial(String phoneNumber) {
		
		System.out.println(phoneNumber);     //實例化接口1方法1
	}

	
	public void huangup() {
		
		System.out.println("通話完畢!");       //實例化接口1方法2
	}
	  
  }
public class Duojiekou {
      
	public static void main(String[] args) {
		// TODO Auto-generated method stub
Phone phone = new Phone();
phone.chat("地瓜地瓜,我是土豆,收到請回答!");        //輸出
phone.answer("土豆土豆,我是地瓜,已經收到!");
phone.dial("1-917-8681888");
phone.huangup();
	}
}

  輸出結果技術分享

3、多態的練習

package com.chainsoft.lianxi.AM;
       class USB {
       public String name;
       public String getName()
       {
    	   return name;
       }
       public void setName(String name)
       {
    	   this.name = name;
       }
       public String load()
       {
    	   return"USB設備正在裝載...";
       }
       }
     class UDisk extends USB
     {
    	 public UDisk()
    	 {
    		 setName("16G U盤");
    	 }
    	 public String load()
    	 {
    		 return "正在裝載的是:"+getName();
    	 }
     }
     class Umouse extends USB
     {
    	 public Umouse()
    	 {
    		 setName("USB接口鼠標");
    	 }
    	 public String load()
    	 {
    		 return "正在裝載的是:"+getName();
    	 }
     }
     class UKeyboard extends USB
     {
    	 public UKeyboard()
    	 {
    		 setName("USB接口鍵盤");
    	 }
    	 public String load()
    	 {
    		 return"正在裝載的是:"+getName();
    	 }
     }
    public class USBTest{
    	 
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
     USB udisk = new UDisk();
     System.out.println(udisk.load());
     USB umouse = new Umouse();
     System.out.println(umouse.load());
     USB ukeyboard = new UKeyboard();
     System.out.println(ukeyboard.load());
	}

}

  輸出結果技術分享

星期三的收獲