關於java基礎知識,第三節,試用與java初學者

Lesson3

包的概念:包與系統目錄層次相對應的,只是用反斜杆分割”/”.

Package bao

Public class test {

      Public static void main(String [] args){

      System.out.println(“fff”);

}

}

要求有一個包名的目錄

執行方式爲:java bao/test  java bao.test

Javac –d . test.java 可以自動生成目錄.

Import  ava.io.file

Import  ava.io.*

導入其他類包,*是通配符,表示全部導入.

類的說明符 :

1.    public

2.    default(不加訪問說明符時)

類的其他修飾符:

1.    final

2.    abstract抽象類

3.    同一包中的類互相訪問,不用導入import,不通包必須導入.

Javac –d  x.java

Javac –d  y.java

如果編譯的時候要注意順序,如果x用到y,那麼就要先編譯y再編譯x

如果怕麻煩,那就用javac –d  *.java來統配編譯

包外的類如果想被別的包訪問,必須聲明成public(公共的),這樣才能被別的包訪問.

 

4.    final class 最終類,不能再派生子類,不能被繼承.

5.    方法的說明符:

 

Public 公共

Protected保護

Default 默認

Private 私有

方法的其他修飾符:

static 靜態的

final 最終不可改變

abstract抽象

native

synchronizde 同步方法

 

子類不想當抽象方法,就去實現父類的抽象方法,子類的實現的方法可以是空方法.

 

如果想設計一個類,找到這個類所有共性的,但是沒有辦法去了解這個類的個體裏的方法體是什麼樣的,那麼就可以設計成抽象類,比如做一個了人類,知道一些共性,但是無法瞭解每個人的名字和動作,就可以搞一個抽象的類,搞一些抽象的方法,然後通過子類繼承來實現這些類.

1. class HelloWorld{

   public native void as();

   static {

              System.loadLibrary("aaaa");

        }

  

   public static void main(String [] args ){

        new HelloWorld().as();

   }

}

2.編譯

3.創建*.h 頭文件用javah命令

Javah – jni HelloWorld

4.寫方法#include<jni.h>

#include"HelloWorld"

#include<stdio.h>

 

JNIEXPORT void JNICALL

Java_HelloWorld_as(JNIEnv *, jobject);

{

   printf("fsadfasd!/n");

   return;

}

鬱悶了,機器沒有配c的環境,,再議~

垃圾回收問題:

 java.lang.Obiect有一個方法finalize,當垃圾回收器啓動的時候,改方法被調用.

java.lang.System.gc這個方法是強制執行垃圾回收器.

java感到內存不足的時候垃圾回收器才運行,所以可以用gc強制執行.

 

接口的運用:

Interface 接口的定義語句

接口實現用: implements

Interface Spotr{

      Void run();

      Void jump();

}

Class tim implements Spotr {

          

Void run(){

      System.out.println(“aa”);

};

      Void jump(){

      System.out.println(“bb”);

};

Public static void main(String [] args){

      Tim t=new  tim();

t.run();

t.jump();

}

}

接口裏所有的方法都是public 和抽象的,所以要實現接口的方法體裏的方法時,方法必須爲public.

要實現了接口後的類可以被實例化,那麼就要重寫接口裏的所有方法

接口中可以有數據成員,聲明爲:public static final

一個接口可以繼承另外一個接口

Java不容許類多繼承,但接口可以多繼承

實現接口人,和調用接口人,比如顯卡和主板之間的接口,有顯卡廠商去實現接口的功能,然後主板廠商調用接口的功能,其實調用的是實現類的功能.

 

接口定義一些方法,這些方法沒有方法體,方法體由實現的人來定義

實現接口的功能,就是實現接口的人來實現這個接口裏所有的方法的方法體

調用接口的方法體,直接調用的是接口類,而不是實現接口的類,就是上邊指向的這個類

實現

調用接口,不是調用實現

 

 

 

 

 

 

 

 


要調用接口:要把接口的實現傳給接口,然後在調用接口,用實現裏的方法.

 

接口 A  實現 B

C調用

B 實現 A

C調用 A{

Public void setcard(A a){  實現接口調用

                 This.a=a

}

B b=new B();

Setcard(b);  將接口的實現傳給接口.

}

內部類

內部類可以訪問外部所有成員,外部類可以控制內部類的可見性.

內部類和外部類可以有一樣的方法名,因爲內部類也可以直接拿到外部去定義.

內部類編譯後的取名:

外部類名$內部類名.class

 

class  outer{

      class inner{

}

}

如果以類內部類被定義在一個方法裏,那麼這個內部類只能被這個方法來操作了.

通過outer.this.index來訪問外部類的成員變量.

其他的類訪問外部類的內部類,在外部類內定義方法:

Inner getinner(){

      Return new Inner;

}

其他類調用:

Outer.Inner  inner=new  Outer.getinner();

inner.print();

其他類訪問內部類,先用外部類產生內部類對象,然後其他類纔可以調用內部類

Outer.Inner  inner=Outer.new Inner();

靜態方法不能調用非靜態成員.

在一個方法中聲明一個類,那麼這個方法的參數和這個方法裏的成員變量都要聲明爲final.(是需要在內部訪問的時候才聲明爲final).

 

 

 

 

 

 

 

 

這個爲類繼承帶內部類的方法,內部類用super實例化.

class car{

      class lun{

           void ce(){

      System.out.println("aaaa");

}

}

}

class pp extends car.lun{

      pp(car ca){

      ca.super();爲了可以實例化內部類.

}

      public static void main (String [] args){

           car a=new car();

     pp x=new pp(a);

     x.ce();

  }

}

內部類實現接口:

interface Animal{

      void eat();

      void sleep();

}

class Zoo {

           class tiger implements Animal{

                 public void eat(){

                      System.out.println("eat");

                 }

                 public void sleep(){

                      System.out.println("sleep");

                 }

        }

        /*Animal getAnimal(){

        return new tiger();//通過接口的實現去實現接口

        }*/

        Animal getAnimal(){

        return new Animal(){//在這裏直接實現接口

               public void eat(){

                            System.out.println("eat");

                      }

                      public void sleep(){

                            System.out.println("sleep");//這是匿名的內部類

                      }

            };

        }

       

}

class test{

      public static void main(String [] args){

           Zoo z=new Zoo();

           Animal an=z.getAnimal();

           an.eat();

           an.sleep();

      }

}

異常處理:

Try{異常代碼}catch(Exception e){捕獲後執行的代碼}finally{肯定會執行的代碼}

很簡單,好像沒有什麼可說的.

看一下api的異常.

程序編寫錯誤,水平問題,這類錯誤不需要捕獲的.

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章