public abstract class A implements B{
public void A(){
System.out.println("A");
}}
public interface B{
public void B();
}
public class Test {
public static void main(String[] args) {
//new出接口或者实现类
A a= new A (){
//实现接口里未实现的方法
public void B() {
System.out.println("匿名内部类");
}
};
a.A();
a.B();}
生成静态内部类对象的方式为:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
class StaticInner {
private static int a = 4;
// 静态内部类
public static class Inner {
public void test() {// 静态内部类可以访问外部类的静态成员// 并且它只能访问静态的
System.out.println(a);
}
}}public class StaticInnerClassTest {
public static void main(String[] args) {
StaticInner.Inner inner = new StaticInner.Inner();
inner.test();
}}
内部类的好处如下:
1. 内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象那个的信息相互独立;
2. 在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类;
3. 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏
4. 方便编写事件驱动程序;
5. 方便编写线程代码。
可以有多个实例,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类, 方便编写事件驱动程序,方便编写线程代码。
1. 内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象那个的信息相互独立;
2. 在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类;
3. 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏
4. 方便编写事件驱动程序;
5. 方便编写线程代码。
典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其他外围类的对象。所以你可以认为内部类提供了某种进入其外围类的窗口。使用内部类最吸引人的原因是:
每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。如果没有内部类提供的可以继承多个具体的或抽象的类的能力,一些设计与编程问题就很难解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了“多重继承”。
内部类的好处如下:
1. 内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象那个的信息相互独立;
2. 在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类;
3. 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏
4. 方便编写事件驱动程序;
5. 方便编写线程代码。
1. 内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象那个的信息相互独立;
2. 在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类;
3. 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏
4. 方便编写事件驱动程序;
5. 方便编写线程代码。
内部类的好处有以下五点:
1. 内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象那个的信息相互独立
2. 在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类
3. 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏
4. 方便编写事件驱动程序
5. 方便编写线程代码
一、什么是内部类
二、内部类的分类
内部类主要分为普通内部类(成员内部类)、局部内部类、匿名内部类、嵌套内部类(静态内部类)。
非静态内部类中不能定义静态成员,静态内部类不能访问外部类普通成员变量(非静态成员)。
1. 普通内部类(成员内部类)
编译一下,我们看到目录中出现了两个
class
文件在我们的工作目录里,可以看到多出一个Test$memberInClass.class
的文件,这是就是内部类编译后的class
文件。image.png
2. 方法内部类(局部内部类)
3. 匿名内部类(在Android里最常见的一种)
当我们把内部类的定义和声明写到一起时,就不用给这个类起个类名而是直接使用了,这种形式的内部类根本就没有类名,因此我们叫它匿名内部类。
4. 嵌套内部类(静态内部类)
嵌套内部类,就是修饰为static的内部类。声明为
static
的内部类,不需要内部类对象和外部类对象之间的联系,就是说我们可以直接引用outer.inner
,即不需要创建外部类,也不需要创建内部类。嵌套类和普通的内部类还有一个区别:普通内部类不能有
static
数据和static
属性,也不能包含嵌套类,但嵌套类可以。而嵌套类不能声明为private
,一般声明为public
,方便调用。三、使用内部类的好处
1. 内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象那个的信息相互独立;
2. 在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类;
3. 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏
4. 方便编写事件驱动程序;
5. 方便编写线程代码。
相关问题推荐