java内部类的用法
java中的内部类是指在一个类中定义另一个类。这样用的好处是什么呢?
我们先来看下内部类的实现代码:
package csdn;
public class Csdn {
public interface Content{
int content();
}
public interface Destination{
String destination();
}
public static class Goods{
private class Contents implements Content{
private int value;
private Contents(int s) {
this.value=s;
System.out.println("货物的价格"+this.value);
}
@Override
public int content() {
return this.value;
}
}
protected class Destinations implements Destination{
private String dest;
private Destinations(String s) {
this.dest=s;
System.out.println("货物的目的地"+this.dest);
}
@Override
public String destination() {
return this.dest;
}
}
public Contents cont(int a) {
return new Contents(a);
}
public Destinations dest(String s) {
return new Destinations(s);
}
public static void main(String[] args) {
Goods good=new Goods();
Content c=good.cont(100);
Destinations d=good.dest("鞋子");
}
}
}
运行结果:
这是一个简单的demo。
总结下内部类应用的场景和好处:
1:我们把实现功能的类用内部类实现,达到了封装的效果。外部只是调用内部类的方法而已
2:可以用内部类来实现对应类的接口,这样能更好的实现接口的实现,避免了一个类要实现多个接口。降低耦合度。
3:由于内部类可以层层嵌套,所以某种意义上来说实现了类似于c++中的多继承。
4:内部类可以直接访问外部类的变量,包括外部类声明的private变量。
注意事项:
1:由于内部类可以访问外部类,并可以修改。而且内部类与外部类是异步执行的,所以如果内部类要对外部类的变量访问
最好把变量设置成static final private类型。
2:不能直接声明内部类,要先声明外部类在声明内部类。因为内外类类似于继承,也是先有祖先才有孩子。