内部类

内部类

允许一个类在内部中定义另一个类

使用内部类是因为:
内部类可以访问外部类的所有变量,方法 (包括私有的)
内部类可以对同一包下的其他类进行隐藏。


内部类

成员内部类  
成员式内部类如同外部类的一个普通成员。
成员式内部类可以使用各种修饰符,包括 public、protected、private、static、final 和 abstract,也可以不写。

非静态内部类不能声明任何static 成员

public class Test{

public class Demo{

System.out.print("这是一个内部成员内部类");

}

}


内部类的实例化

public class Testdemo{

public static void main( String [] args){

Test  test=new Test();   //实例化外部类

Test.Demo demo=demo.new Demo();  //实例化内部类

}


}


静态内部类  

static 内部类相当于外部类的static 成员 ,不与外部类存在依赖关系 ,可以直接创建


public class Test{

public staticclass demo{

System.out.print("这是一个静态内部类");

}

}

静态内部类的实例化

public class Testdemo{

public static void main( String [] args){

Test.Demo demo=new Test.Demo();  //实例化内部类

}


}



重名时的区分方法


public class Outer{

    private int size;

    public class Inner{

        private int size;

        public void dostuff(int size){

            size++;  // 局部变量 size;

            this.size;  // 内部类的 size

            Outer.this.size++;  // 外部类的 size

        }

    }

}

局部内部类 

是定义在代码块中的内部类,只在代码块中可见
特性:
仅在定义了它们的代码块中是可见的;
可以使用定义它们的代码块中的任何局部 final 变量;
局部类不可以是 static 的,里边也不能定义 static 成员;
局部类不可以用 public、private、protected 修饰,只能使用缺省的;
局部类可以是 abstract 的。

匿名内部类

匿名内部类是局部内部类的一种特殊形式,也就是没有变量名指向这个类的实例,而且具体的类实现会写在这个内部类里面。

注意:匿名类必须继承一个父类或实现一个接口。

abstract class Person {
    public abstract void eat();
}
public class Demo {
    public static void main(String[] args){
       
        // 继承 Person 类
        new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        }.eat();
    }
}
静态内部类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值