Java 內部類的使用!

來源:互聯網
上載者:User

            本人做java 也算是半路出家的沒有像專科生那樣系統的學習java,所以對一些概念的東西不是很在行或者一不常用的東西有點模糊正好最近有點時間就想重新瞭解一些基礎的東西,今天主要瞭解內部類的使用!

1,概述
     內部類是指在一個外部類的內部再定義一個類。
     內部類作為外部類的一個成員,並且依附於外部類而存在的。
     內部類可為靜態,可用PROTECTED和PRIVATE修飾。(而外部類不可以:外部類只能

     使用PUBLIC和DEFAULT)。

2,分類
    成員內部類、
    局部內部類、
    靜態內部類、
    匿名內部類(圖形是要用到,必須掌握)。

內部類的使用的優缺點:

   優點:減少了在類檔案編譯後的產生的位元組碼檔案的大小
   缺點:使程式結構不清晰

java內部類有什麼好處?為什麼需要內部類?

  首先舉一個簡單的例子,如果你想實現一個介面,但是這個介面中的一個方法和你構想的這個類中的一個方法的名稱,參數相同,你應該怎麼辦?這時候,你可以建一個內部類實現這個介面。由於內部類對外部類的所有內容都是可訪問的,所以這樣做可以完成所有你直接實現這個介面的功能。

  不過你可能要質疑,更改一下方法的不就行了嗎?

  的確,以此作為設計內部類的理由,實在沒有說服力。

  真正的原因是這樣的,java中的內部類和介面加在一起,可以的解決常被C++程式員抱怨java中存在的一個問題沒有多繼承。實際上,C++的多繼承設計起來很複雜,而java通過內部類加上介面,可以很好的實現多繼承的效果。

public class InnerCls {public String str="this a not static property!";public static String stastr="this a static property";/**static Inner Class*/static class StaInner{public static void doSomthing(){System.out.println("static method >>"+stastr);System.out.println("**********line******************");}public void testSomthing(){System.out.println("no static method >>"+stastr);}}/**not static inner 不能有static 方法 */class Inner{public void doSomething(){System.out.println("#########################");System.out.println(str);System.out.println(stastr);}}public static void main(String[] args) {/**for static inner Class*/InnerCls.StaInner.doSomthing();InnerCls.StaInner is=new InnerCls.StaInner();is.testSomthing();/**for not static inner Class*/InnerCls ics=new InnerCls();Inner ii= ics.new Inner();ii.doSomething();}}

package com.lean.innercls.used;public class OuterFInCls {public static void main(String[] args) {Outer outer=new Outer();outer.makeInner();}}class Stu{public void print(){System.out.println("this is a stu");}}class Course{public void print(){System.out.println("this is a course");}}/**實現多繼承  或者有同名的方法也可以利用內部類來實現*/class Outer extends Course{private String outerName="fkinn";class Inner extends Stu{}public void makeInner(){Inner inner=new Inner();inner.print();}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.