日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内部内的创建与使用

發布時間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内部内的创建与使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內部內有幾種,為局部內部內,成員內部內,匿名內部內(局部內部類的一種),靜態內部內,非靜態內部內;

來說說這幾個內部內。

如何訪問內部內的成員:外部類名.內部類名 對象名 = 外部類對象.內部類對象;

成員內部內:在成員位置定義的類叫做成員內部類局部位置。

例如:

public class Body{//外部類 身體

?private boolean life = true;//生命狀態

? ? public class Heart{//內部類 心臟
? ? ? ? public void jump(){//跳動
? ? ? ? ? ? System.out.println("心臟在跳");
? ? ? ? ? ? System.out.println("聲明狀態:" + life);//內部類方位外部類中的成員變量
? ? ? ? }

? ? ? ? public void setLife(boolean li){
? ? ? ? ? ? life = li;//內部類能夠調用外部類中的元素
? ? ? ? }

? ? ? ? public class blood{
? ? ? ? ? ? public void print(){
? ? ? ? ? ? ? ? System.out.println("我是心臟里面的血管");
? ? ? ? ? ? }
? ? ? ? }
? ? }

}

public class BodyTest {
? ? public static void main(String[] args) {
? ? ? ? //創建一個內部類對象
? ? ? ? Body.Heart bh = new Body().new Heart();

? ? ? ? //調用內部類中的方法
? ? ? ? bh.jump();
? ? ? ? bh.setLife(false);
? ? ? ? bh.jump();

? ? ? ? Body.Heart.blood bhb = new Body().new Heart().new blood();
? ? ? ? bhb.print();
? ? }
}

局部內部類:在局部位置定義的類,被稱為局部內部類

例如:
public class Cat {//外部類
? ? private String name = "大橘為重";

? ? public void m(){
? ? ? ? //局部變量如果在內部類中使用必須使用final進行修飾
? ? ? ? final int age = 5;
? ? ? ? //局部內部類不允許使用訪問控制修飾符,只能使用final和abstract進行修飾
? ? ? ? ? class say{
? ? ? ? ? ? public ?void m2(){
? ? ? ? ? ? ? ? System.out.println("喵喵喵喵喵");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? //在定義局部內部類的方法中對局部內部類進行創建對象
? ? ? ? new say().m2();
? ? }
}

public class CatTest {
? ? public static void main(String[] args) {
? ? ? ? Cat c = new Cat();
? ? ? ? c.m();
? ? }
}
?

匿名內部類:匿名內部類的作用和格式
?? ?作用:匿名內部類是創建某個類型的子類對象的快捷方式
?? ?格式:
new 父類或接口(){
? ? //進行方法重寫
}

public class Demo {
? ? public static void main(String[] args) {
? ? ? ? //接口不能創建對象
? ? ? ? Person p = new Person() {//這一對花括號中的內容就是匿名內部類
? ? ? ? ? ? //實現接口中的所有的抽象方法就可以了
? ? ? ? ? ? @Override
? ? ? ? ? ? public void eat() {
? ? ? ? ? ? ? ? System.out.println("吃米飯");
? ? ? ? ? ? }
? ? ? ? };
? ? ? ? //如果對接口創建了對象,使用匿名內部類的方法是將接口中的方法實現了
? ? ? ? //那么我們可以通過調用接口創建的對象將這個方法調用出來
? ? ? ? p.eat();
? ? }
}

靜態內部內:是指在創建內部類的時候使用static修飾的內部類

在創建靜態內部類的時候,不需要創建外部類對象

外部類名.內部類名 對象名 = new 外部類名.內部類名();

public class Outer {
? ? private String name1 = "旺財";
? ? static class Inner {
? ? ? ? String name2 = "來福";
? ? ? ? public void m(){
? ? ? ? ? ? //1、靜態內部類不能直接訪問外部類中非靜態的成員變量
? ? ? ? ? ? //2、如果想要訪問這些變量需要創建對象
? ? ? ? ? ? System.out.println("外部類的成員變量:" + new Outer().name1);
? ? ? ? }
? ? }

? ? //在靜態內部類的外部成員的位置寫一個方法,創建內部類對象,調用靜態內部類的方法
? ? public void m2(){
? ? ? ? new Inner().m();
? ? }

}

非靜態內部類:

創建對象格式:外部類名.內部類名 對象名 = new 外部類名().new 內部類名();

?public static void main(String[] args) {
? ? ? ? Outer.Inner in = new Outer.Inner();
? ? }
}
靜態內部類中可以定義靜態成員和非靜態成員。其他類在調用外部類中的靜態內部類的時候,需要通過完整的類名訪問靜態內部類中的靜態的成員.如果要訪問靜態內部類中的其他非靜態成員,需要通過靜態內部類的對象進行調用
public class Outer_02 {
? ? static class Inner_02{
? ? ? ? int a = 10;//靜態內部類的非靜態成員變量
? ? ? ? static int b = 20;//靜態內部類的靜態的成員變量
? ? }
}

public class OuterTest {
? ? public static void main(String[] args) {
? ? ? ? Outer_02.Inner_02 oi = new Outer_02.Inner_02();
? ? ? ? System.out.println(oi.a);//訪問靜態內部類中非靜態的變量
? ? ? ? System.out.println(Outer_02.Inner_02.b);//訪問靜態內部類中靜態的變量
? ? }
}

總結

以上是生活随笔為你收集整理的内部内的创建与使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。