java内部类
2021-01-23 04:14
标签:new dem 访问 name strong 代码 调用 abc 成员内部类 内部类 指的是在Java中可以将一个类定义在另一个类的内部; 内部类可以定义在 类的内部(与类成员层次一致) 内部类可以定义在 方法/块内部(与类成员相差一个层次 方法的局部变量一个层次) *1.成员内部类 将一个类直接定义在类的里面,作为成员,与属性或方法层次一致; 成员内部类可以与正常类一样 使用不同的修饰符来修饰; 好处1.省略了一个.java文件;2.成员内部类中可以访问外部类的所有成员 包括私有的; 若想要在内部类中通过对象.调用外部类成员 外部类.this.外部类成员(属性/方法); 内部类存在后 源代码进行编译 产生一个字节码 Demo$Include.class 2.局部内部类 将一个类定义在方法/块里面,作为成员的内部结构,与临时的局部变量一个层次 局部内部类像是一个局部的变量一样,不能用public protected private 及static 只能用abstract或final 局部内部类命名规则 Demo$1InnerTestMethod.class 局部内部类 使用的变量只能是final修饰;编译 字节码定义好啦 由于变量的内容是可以改变 *3.匿名内部类 成员匿名内部类 局部匿名内部类 通常是接口或抽象类的具体子类这样写; 开发中为了省略一个类文件 上述写法比较常见; 匿名内部类很特殊 只有类体 没有类的所有结构 (修饰符 名字 继承 实现) 不能用任何修饰符来修饰 匿名内部类也没有构造方法; 如,做一个按钮 绑定一个时间监听器; 4.静态内部类 成员静态内部类 不需要外部对象,通过正常的方式直接创建内部类; 静态元素不能方法非静态成员(自己类和外部类都不可以) java内部类 标签:new dem 访问 name strong 代码 调用 abc 成员内部类 原文地址:https://www.cnblogs.com/canglongdao/p/12885673.htmlpackage innerclass;
public class Demo{
private String name="Demo类属性";
{
}
public void testDemo(){
System.out.println("testDemo类");
}
public void testDemoOne(){
String s="abc";
class InnerTestMethod{
String xx=s;
}//局部内部类;该方法完,则回收
System.out.println("testDemo类");
}
/*
public void testDemoTwo(){
class InnerTestMethod{
}//局部内部类;该方法完,则回收
System.out.println("testDemo类");
}
*/
public class Include{
private String name="内部类属性";
public void testInner(){
System.out.println("testInner中=;;"+Demo.this.name);
System.out.println("testInner中-;;"+this.name);
Demo.this.testDemo();
testDemo();
}
}//成员内部类;
public static class InnerDemo{
}//静态成员内部类
}
package innerclass;
import innerclass.Demo.Include;
import innerclass.Demo.InnerDemo;
public class Test{
public static void main(String[] args){
Demo a=new Demo();
//Demo.Include b=a.new Include();
//Include b=a.new Include();
Include b=new Demo().new Include();
b.testInner();
InnerDemo c=new InnerDemo();
}
}