python做视频网站,网站关键词排名提高,装修公司网站asp源码,自媒体135官网手机版下载前言 本篇会详细讲解内部类的四种形式#xff0c;让你掌握内部类~ 欢迎关注个人主页#xff1a;逸狼 创造不易#xff0c;可以点点赞吗~ 如有错误#xff0c;欢迎指出~ 目录 前言 内部类介绍 实例内部类 定义 调用 静态内部类 定义 调用 匿名内部类 定义和调用1 调用方法2 …前言 本篇会详细讲解内部类的四种形式让你掌握内部类~ 欢迎关注个人主页逸狼 创造不易可以点点赞吗~ 如有错误欢迎指出~ 目录 前言 内部类介绍 实例内部类 定义 调用 静态内部类 定义 调用 匿名内部类 定义和调用1 调用方法2 局部内部类 定义和调用 内部类介绍
在 Java 中可以将一个类定义在另一个类或者一个方法的内部 前者称为内部类后者称为外部类。B类定义在A类的内部称B类为内部类A类为外部类内部类也是封装的一种体现。
内部类分为三种
实例内部类、静态内部类、匿名内部类、局部内部类
实例内部类
定义
实例内部类定义在外部类的里面方法的外面
class OuterClass{public int data11;public int data22;public static int data33;class InnerClass{public int data44;public int data55;public static int data66;//内部类的成员方法public void test(){System.out.println(InnerClass::test());}}public void testA(){System.out.println(OuterClass::testA());}
}调用
实例内部类的实例化
外部类.内部类 内部类引用外部类引用.new内部类对象。
实例内部类可以理解为是外部类的一个成员要通过外部类的引用来调用 public static void main(String[] args) {OuterClass outerClassnew OuterClass();//实例化外部类OuterClass.InnerClass innerClassouterClass.new InnerClass();//实例化内部类innerClass.test();//调用内部类中的成员方法} 实例内部类的方法可以调用自己的成员变量及外部类的成员变量 //内部类的成员方法public void test(){System.out.println(InnerClass::test());System.out.println(data4);System.out.println(data5);System.out.println(data6);System.out.println(###########);System.out.println(data1);System.out.println(data2);System.out.println(data3);} 调用test方法 结果如图 当内部类和外部类有相同的成员变量时首先会访问内部类中的成员
此时若就想访问外部类的成员变量可以使用 外部类.this.成员变量 即可访问 静态内部类
定义
静态内部类定义在 外部类的里面方法的外面并且用static修饰。生成内部类引用不需要外部类引用的调用
class OuterClass{public int data11;public int data22;public static int data33;//静态内部类外部类的里面方法的外面并且用static修饰static class InnerClass{public int data44;public int data55;public static int data66;//内部类的成员方法public void test(){System.out.println(InnerClass::test());}}public void testA(){System.out.println(OuterClass::testA());}
调用
静态内部类的实例化 OuterClass.InnerClass innerClassnew OuterClass.InnerClass();innerClass.test(); 调用外部类的成员变量通过直接在静态内部类的成员方法中 实例化一个外部类对象通过对象直接调用外部类的成员变量
//静态内部类的成员方法public void test(){System.out.println(InnerClass::test());OuterClass outerClassnew OuterClass();System.out.println(data4);System.out.println(data5);System.out.println(data6);System.out.println(###########);System.out.println(outerClass.data1);System.out.println(data3);} 结果 内部类和外部类共用同一个java源文件但是经过编译之后内部类会形成单独的字节码文件。
匿名内部类
定义和调用1
相当于一个类实现了这个接口同时重写了test方法
//接口
interface ITestable{void test();
}public class Test4 {public static void main(String[] args) {
//匿名内部类new ITestable(){Override//重写了接口的方法public void test() {System.out.println(test();}}.test();//调用test方法 直接在后面.test方法}
}
调用方法2
通过引用对象it调用test方法 ITestable it new ITestable() {Overridepublic void test() {System.out.println(test());}};it.test(); 局部内部类
定义和调用
定义在外部类的方法中的类。
class OuterClass{public int data11;public void testA(){//局部内部类 定义在方法里面 只能在当前方法中使用class InnerClass {public int data1100;public static int data22;public void test(){System.out.println(InnerClass::test);}}
//局部内部类 只能在当前方法testA中使用InnerClass innerClassnew InnerClass();innerClass.test();}
}
注意
局部内部类只能在所定义的方法体内部使用不能被public、static等修饰符修饰编译器也有自己独立的字节码文件命名格式外部类名字$数字内部类名字.class几乎不会使用