java內部類的那些事兒_讓你一看就弄明白

來源:互聯網
上載者:User

在“基於java內部類作用的深入分析”中你可以瞭解java內部類的一些東西,不過內部類中還有一些地方值得我們細心研究...

下面是我總結出來的java內部類的一些東西,分享給大伙兒....
one:靜態內部類可以有靜態成員,而非靜態內部類則不能有靜態成員
怎樣理解這個呢?
看看下面的代碼:

複製代碼 代碼如下:/**
*
*/
package com.b510.test;

public class Test {
private int number = 1;

// 非靜態內部類 可以有 非靜態成員
private class InnerTest {
// error 非靜態內部類不能有靜態成員
// private static int inNumber = 2;
private int inNumber = 2;

public InnerTest() {
setNumber(2);
inNumber = inNumber + number;
System.out.println("innerTest---" + inNumber);
}
}

// Test的私人方法
private void setNumber(int number) {
this.number = number;
}

// 建構函式
public Test() {
InnerTest in = new InnerTest();
System.out.println("test");
}

public static void main(String[] args) {
Test test = new Test();
// innerTest---4
// test
}
}

第一概念是不是很好理解.....
two:靜態內部類的非靜態成員可以訪問外部類的靜態變數,而不可訪問外部類的非靜態變數
這裡涉及到靜態內部類和外部類的關係:複製代碼 代碼如下:/**
*
*/
package com.b510.test;

public class Test {
private static int number = 1;
private String name = "test";

// 靜態 內部類
private static class InnerTest {
// 靜態 內部類 可以有非靜態成員
private int inNumber = 2;

public InnerTest() {
//靜態內部類 可以訪問 外部類 的靜態成員
setNumber(2);
inNumber = inNumber + number;
System.out.println("innerTest---" + inNumber);
//error 靜態內部類 不可以訪問 外部類 的非靜態成員
//System.out.println(name);
}
}

// Test的 靜態 私人方法
private static void setNumber(int n) {
number = n;
}

// 建構函式
public Test() {
InnerTest in = new InnerTest();
System.out.println("test");
}

public static void main(String[] args) {
Test test = new Test();
// innerTest---4
// test
}
}

這個其實很好理解的,不知道你看來代碼15~23有沒理解....
three:非靜態內部類的非靜態成員可以訪問外部類的非靜態變數
這個在第一個中就已經提到了:在one代碼的17行複製代碼 代碼如下:1 inNumber = inNumber + number;

number是外部類的非靜態成員,inNumber作為非靜態內部類的成員可以訪問number

是不是很好理解....

總結一下:

聯繫我們

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