Java面試集合(六)

來源:互聯網
上載者:User

標籤:類的方法   final   friend   img   中文   列表   shu   靜態   回收機制   

1. abstract抽象

什麼是abstract,中文為抽象,從具體事物抽出,概括它們共同的方面,本質屬性與關係等,稱為抽象。看不見,摸不著的東西叫做抽象,抽象是人們對世界萬物的感覺,用特定的映像表達出來,要理解抽象的東西,就必需從內心感受它們。

什麼是抽象類別

抽象類別的定義和使用格式

abstract class 類名{       類體}
class 類名 extends 抽象類別 {          //實現全部抽象方法}

抽象類別,用abstract修飾的類為抽象類別,一個類如果它的所有子類都重寫了這個方法,那麼給它添加抽象的聲明,那麼這個類就為抽象類別。

那麼這個抽象方法的類就為抽象類別,具有抽象方法的類為抽象類別,但抽象類別不一定具有抽象方法,抽象類別中可以有構造方法,不能建立對象。

抽象類別中如果有抽象方法,那麼子類繼承這個抽象類別之後,就必須要重寫抽象類別中的 所有抽象方法。

一個類用abstract進行修飾為抽象類別,那麼這個抽象類別不能在用final來修飾了,抽象類別是類對象的抽象集合,抽象類別使用abstract關鍵字修飾,abstract不能與final並列修飾同一個類。

對於抽象方法,不能在用staticfinalprivate來修飾

在抽象類別中具體抽象的是屬性和行為,在抽象類別中,含有抽象方法的類為抽象類別,一定是抽象類別,但抽象類別中不一定含有抽象方法。

案例:

//抽象類別:作為抽象方法是可以重載的public abstract class Person { public abstract void run();}//子類繼承抽象類別public class Studentone extends Person{ @Override public void run(){  System.out.println("人會跑"); }}//測試public class Test { public static void main(String[] args){  Person person = new Student();  person.run(); }}//結果人會跑
2. 介面什麼是介面(interface)

介面中的方法都是抽象方法public許可權,全是抽象函數,不能產生對象

interface Student{public void read();public void write();}class ChineseStudent implements Student{//複寫public void read(){ System.out.println("read");}public void write(){ System.out.println("write");}}class Test{public static void main(String args[]){ ChineseStudent chinesestudent = new ChineseStudent(); Student student = chinesestudent;  student.read(); student.write();}}

介面的定義和使用格式

interface 介面名 {          [public] [static] [final] 變數;          [public] [abstract] 方法;}
class 類名 implement 介面列表 {          //實現所有介面中聲明的方法}

什麼是介面呢?這個類中所有的方法都是抽象方法。

介面不同抽象,沒有構造方法,介面不是一個類。

介面中也不能建立對象,抽象方法也不能。

JDK1.8以前,interface來定義介面,通過implements關鍵字讓介面和類產生關係,類實現介面,要重寫介面中的所有抽象方法。

Java中只有單繼承,多實現,一個類可以繼承一個父類,但一個類可以實現多個介面。

實現介面用implements關鍵字,一個介面可以實現多個介面,一個介面可以繼承多個介面interface Student{public void read();public void write();}interface Teacher{public void teach();public void test();}class Person implements Student,Teacher{public void read(){ System.out.println("read"):}public void write(){ System.out.println("write");}public void teach(){ System.out.println("teach"):}public void test(){ System.out.println("test"):}}
// 測試class Test{public static void main(String args[]){ Person person = new Person(); Student student = person; student.read(); student.write(); Teacher teacher = person; teacher.teach(); teacher.close();}}

介面解決了多繼承的問題,將多繼承的這種機制在java中通過介面實現了,介面與介面之間是繼承的關係。

interface A{ void showa();}interface B{ void showb();}class C implements A,B{ public void showa(){}; public void showb(){};}

介面中的屬性預設是使用public static final修飾的

interface A {void add();}class B implements A { // 介面中的方法預設是使用public修飾void add(){}}

實現多介面,存在方法名一致時,會導致方法重寫的時候產生歧義。

抽象類別和介面比
  • 抽象類別是對類抽象,而介面是對行為的抽象。
  • 抽象類別為繼承關係,介面為實作類別與介面之間的契約關係。
  • 抽象類別為單繼承,介面為多“繼承”。子類只能繼承一個抽象類別,但可實現多個介面。
代碼
//抽象類別abstract class Person { abstract void run(); abstract void jump();}//介面interface School{ void go();}//實現class Student extends Person implements School{ void run(); void jump(); void go();}

抽象類別中成員變數預設為friendly,函數修飾符public,protected,default

介面屬性為靜態public static final成員函數為public

3. 內部類

內部類的分類:

  • 靜態內部類
  • 局部內部類
  • 成員內部類
  • 匿名內部類
// 外部類class Demo{ private int num = 3; // 定義內部類 class Int{  void show(){   System.out.println("num="+num);   } }  void method(){  Int int = new Int();  int.show(); }}class Inner{ public static void main(Stirng[] args){  Demo demo = new Demo();  demo.method(); }}

內部類有 非靜態,靜態,匿名類

文法:

new 外部類().new 內部類()

成員內部類:

在成員變數的位置上定義的類為成員內部類。
如果要使用成員內部類就要使用外部類.內部類來訪問。

靜態內部類:

在成員位置上用static修飾的內部類為靜態內部類。

靜態內部類只能訪問外部類的靜態成員和本內部類的成員;且不能訪問外部類的非靜態成員

匿名內部類:(對應類的子類或者對應介面的實作類別)

是一種特殊的局部內部類。

訪問外部類中的內部類,非靜態

Outer.Inner int = new Outer().new Innter();

對靜態內部類中的非靜態成員

Outer.Inner int = new Outer().new Innter();

static聲明的內部類,則內部類變成外部類,用static聲明的內部類不能訪問非static的外部類屬性,外部類的屬性要用static才能訪問。

內部類可以使用外部類所有的方法和變數,就算被私人化也一樣可以,如:

class Outer{ private int x; // 建立內部類的執行個體 Inner inner = new Inner(); public void do(){  // 調用內部類的方法  inner.go(); } // 內部類 class Inner{  void go(){   x = 30;  } }}
4. 包

java中提供了不同的類和介面存放在不同的包中。

常見的包

java.appletjava.awtjava.netjava.utiljava.langjava.awt GUIjava.io 資料轉送java.math  數學運算java.nio 高並發java.net  網路編程java.text  格式化java.sql  和資料庫互動

包的格式:

package 包名[.子包名[…]];

引入java

import  包階層的類名;
垃圾分代回收機制

垃圾分代回收機制針對堆記憶體,所有記憶體由Java自動分配到回收,垃圾收集器。

結語
  • 下面我將繼續對JavaAndroid中的其他知識 深入講解 ,有興趣可以繼續關注
  • 小禮物走一走 or 點贊

Java面試集合(六)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.