JAVA内部类使用,什么时候该使用内部类及使

Python013

JAVA内部类使用,什么时候该使用内部类及使,第1张

java中的内部类和接口加在一起,可以的解决常被C++程序员抱怨java中存在的一个问题 没有多继承。

每个内部类都能独立的继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。

1.内部类继承

因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候使用特殊语法。问题在于,指向外围类对象的引用必须被初始化,而在导出类中不存在可连接的默认对象。所以必须要用特殊语法来明确说清楚他们之间的关联。

[java] view plain copy

class WithInner{

class Inner{}

}

public class InheritInner extends WithInner.Inner{

InheritInner(WithInner wi){

wi.super()

}

}

2 内部类覆盖

当继承一个外围类的时候,内部类不会发生什么变化。当明确的继承一个内部类时会发生变化。

[java] view plain copy

public class Egg {

private Yolk y

protected class Yolk {

public Yolk() {

System.out.println("Egg.Yolk")

}

}

public Egg() {

System.out.println("New Egg")

y = new Yolk()

}

}

[java] view plain copy

public class BigEgg extends Egg {

public class Yolk {

public Yolk() {

System.out.println("BigEgg.yolk()")

}

}

public static void main(String[] args) {

new BigEgg()

}

}

输出:

New Egg

Egg.Yolk

1.在一个类内部还存在另一个类,则后者为内部类;

2.内部类可声明成public或private,当内部类声明成public或private时,对其访问的限制与成员变量和成员方法完全相同;

3.定义格式:

标识符 class 外部类的名称{

//外部类的成员

标识符 class 内部类的名称{

//内部类的成员

}

}

示例:

class Outer{ // 定义外部类

private String info = "hello world" // 定义外部类的私有属性

class Inner{ // 定义内部类

public void print(){ // 定义内部类的方法

System.out.println(info) // 直接访问外部类的私有属性

}

}

public void fun(){ // 定义外部类的方法

new Inner().print() // 通过内部类的实例化对象调用方法

}

}

public class InnerClassDemo01{

public static void main(String args[]){

new Outer().fun() // 调用外部类的fun()方法

}

}

这位童鞋可以试着不用内部类写个程序完成以上功能,你会发现代码明显比之前的更加麻烦和复杂,所以内部类的唯一好处是方便的访问外部类中的私有属性,从而减少代码。