java内部类

内部类对象在外部类内部创建直接new就可以

内部类对象在外部创建:要通过外部类对象使用.new关键字创建(静态内部类除外)   比如:OuterClass.InnerClass  x = new OuterClass. new InnerClass 就可以创建内部类了。

 

性质:内部类对象可以访问外部类对象的所有成员(包括私有成员),原理是,创建内部类对象时会生成一个对外部类的引用,在内部类中通过OuterClass.this引用(类名点上this)

    

好处:当一个内部类是接口的实现时(并且在外部类的内部设置为private),就可以把接口的实现完全隐藏,完全访问不到接口的具体实现类,在外部调用外部类的方法返回一个内部类对象。

 

方法内部类:在方法内部声明类的定义,相对于成员内部类来说,这样的好处就是,我需要一个实现了某个接口的类来辅助我工作,但是不希望它是公共的。

*匿名内部类:别的类都是先有定义再new,匿名内部类相反,new person(){类的定义}  先new再紧接着给出定义,匿名内部类没有类名,new后边跟着的名字是匿名内部类的父类(接口),匿名内部类一定是某个类的子类或者是接口的实现。匿名内部类没有构造器,使用的外部变量一定是final修饰的,匿名内部类只用一次,只用一个实例。

(只有内部类才能被static修饰)静态内部类:与外部类没有联系,不持有外部类的引用,与外部类没有关联,不能使用实例化对象中的方法和属性。

 

优点:内部类用于解决java中多继承问题,因为java只能继承一个类,而有时候使用接口又不能满足需求,所以可以使用内部类来继承抽象类或者具体类,所以内部类一般都会继承或者实现接口。

 

posted @ 2019-10-24 16:55  高鸣泽  阅读(171)  评论(0)    收藏  举报