java基礎十

10.01_面向對象(package關鍵字的概述及作用)(瞭解)

  • A:爲什麼要有包

    • 將字節碼(.class)進行分類存放
    • 包其實就是文件夾
  • B:包的概述

  • 舉例:
    學生:增加,刪除,修改,查詢
    老師:增加,刪除,修改,查詢

      方案1:按照功能分
      	com.heima.add
      		AddStudent
      		AddTeacher
      	com.heima.delete
      		DeleteStudent
      		DeleteTeacher
      	com.heima.update
      		UpdateStudent
      		UpdateTeacher
      	com.heima.find
      		FindStudent
      		FindTeacher
      
      方案2:按照模塊分
      	com.heima.teacher
      		AddTeacher
      		DeleteTeacher
      		UpdateTeacher
      		FindTeacher
      	com.heima.student
      		AddStudent
      		DeleteStudent
      		UpdateStudent
      		FindStudent
    

10.02_面向對象(包的定義及注意事項)(掌握)

  • A:定義包的格式
    • package 包名;
    • 多級包用.分開即可
  • B:定義包的注意事項
    • A:package語句必須是程序的第一條可執行的代碼
    • B:package語句在一個java文件中只能有一個
    • C:如果沒有package,默認表示無包名
  • C:案例演示
    • 包的定義及注意事項

10.03_面向對象(帶包的類編譯和運行)(掌握)

  • A:如何編譯運行帶包的類
    • a:javac編譯的時候帶上-d即可
      • javac -d . HelloWorld.java
    • b:通過java命令執行。
      • java 包名.HellWord

10.04_面向對象(不同包下類之間的訪問)(掌握)

  • A:案例演示
    • 不同包下類之間的訪問

10.05_面向對象(import關鍵字的概述和使用)(掌握)

  • A:案例演示
    • 爲什麼要有import
      • 其實就是讓有包的類對調用者可見,不用寫全類名了
  • B:導包格式
    • import 包名;
    • 注意:
    • 這種方式導入是到類的名稱。
    • 雖然可以最後寫*,但是不建議。
  • C:package,import,class有沒有順序關係(面試題)

10.06_面向對象(四種權限修飾符的測試)(掌握)

  • A:案例演示
    • 四種權限修飾符
  • B:結論
  •   			本類	 同一個包下(子類和無關類)	不同包下(子類)	不同包下(無關類)
      private 	Y		
      默認			Y		Y
      protected	Y		Y							Y
      public		Y		Y							Y				Y
    

10.07_面向對象(類及其組成所使用的常見修飾符)(掌握)

*** A:修飾符:
* 權限修飾符:private,默認的,protected,public
* 狀態修飾符:static,final
* 抽象修飾符:abstract

  • B:類:

    • 權限修飾符:默認修飾符,public

    • 狀態修飾符:final

    • 抽象修飾符:abstract

    • 用的最多的就是:public

  • C:成員變量:

    • 權限修飾符:private,默認的,protected,public

    • 狀態修飾符:static,final

    • 用的最多的就是:private

  • D:構造方法:

    • 權限修飾符:private,默認的,protected,public

    • 用的最多的就是:public

  • E:成員方法:

    • 權限修飾符:private,默認的,protected,public

    • 狀態修飾符:static,final

    • 抽象修飾符:abstract

    • 用的最多的就是:public

  • F:除此以外的組合規則:

    • 成員變量:public static final
    • 成員方法:
      • public static
      • public abstract
      • public final**

10.08_面向對象(內部類概述和訪問特點)(瞭解)

  • A:內部類概述
  • B:內部類訪問特點
    • a:內部類可以直接訪問外部類的成員,包括私有。
    • b:外部類要訪問內部類的成員,必須創建對象。
    • 外部類名.內部類名 對象名 = 外部類對象.內部類對象;
  • C:案例演示
    • 內部類極其訪問特點

10.09_面向對象(成員內部類私有使用)(瞭解)

  • private

10.10_面向對象(靜態成員內部類)(瞭解)

  • static
  • B:成員內部類被靜態修飾後的訪問方式是:
    • 外部類名.內部類名 對象名 = 外部類名.內部類對象;

10.11_面向對象(成員內部類的面試題)(掌握)

  • A:面試題
  •   要求:使用已知的變量,在控制檯輸出30,20,10。
      
      class Outer {
      	public int num = 10;
      	class Inner {
      		public int num = 20;
      		public void show() {
      			int num = 30;
      			System.out.println(?);
      			System.out.println(??);
      			System.out.println(???);
      		}
      	}
      }
      class InnerClassTest {
      	public static void main(String[] args) {
      		Outer.Inner oi = new Outer().new Inner();
      		oi.show();
      	}	
      }
    

10.12_面向對象(局部內部類訪問局部變量的問題)(掌握)

  • A:案例演示
    • 局部內部類訪問局部變量必須用final修飾

    • 局部內部類在訪問他所在方法中的局部變量必須用final修飾,爲什麼?
      因爲當調用這個方法時,局部變量如果沒有用final修飾,他的生命週期和方法的生命週期是一樣的,當方法彈棧,這個局部變量也會消失,那麼如果局部內部類對象還沒有馬上消失想用這個局部變量,就沒有了,如果用final修飾會在類加載的時候進入常量池,即使方法彈棧,常量池的常量還在,也可以繼續使用

      但是jdk1.8取消了這個事情,所以我認爲這是個bug

10.13_面向對象(匿名內部類的格式和理解)

  • A:匿名內部類
    • 就是內部類的簡化寫法。
  • B:前提:存在一個類或者接口
    • 這裏的類可以是具體類也可以是抽象類。
  • C:格式:
  •   new 類名或者接口名(){
      	重寫方法;
      }
    
  • D:本質是什麼呢?
    • 是一個繼承了該類或者實現了該接口的子類匿名對象。
  • E:案例演示
    • 按照要求來一個匿名內部類

10.14_面向對象(匿名內部類重寫多個方法調用)

  • A:案例演示
    • 匿名內部類的方法調用

10.15_面向對象(匿名內部類在開發中的應用)

  • A:代碼如下
  •   //這裏寫抽象類,接口都行
      abstract class Person {
      	public abstract void show();
      }
    
      class PersonDemo {
      	public void method(Person p) {
      		p.show();
      	}
      }
    
      class PersonTest {
      	public static void main(String[] args) {
      		//如何調用PersonDemo中的method方法呢?
      		PersonDemo pd = new PersonDemo ();
      		
      	}
      }
    

10.16_面向對象(匿名內部類的面試題)

  • A:面試題
  •   按照要求,補齊代碼
      interface Inter { void show(); }
      class Outer { //補齊代碼 }
      class OuterDemo {
      	public static void main(String[] args) {
      		  Outer.method().show();
      	  }
      }
      要求在控制檯輸出”HelloWorld”
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章