静态内部类:类似于静态变量
实力内部类:类似于实例变量
局部内部类:类似于局部变量
class Test{
// 该类在类的内部,所以称为内部类
// 由于前面有static,所以称为“静态内部类”
static class Inner1{
}
// 该类在类的内部,所以称为内部类
// 没有static叫做实例内部类
class Inner2{
}
public void doSome(){
// 局部变量
int a =10;
// 该类在类的内部,所以称为内部类
// 局部内部类
class Inner3{
}
}
}
public class Test {
public static void main(String[] args) {
MyMath mm = new MyMath();
mm.myMath(new ComputeImpl(),100,200);//100+200=300
}
}
//负责计算的接口
interface Compute {
// 抽象方法
int sum(int a, int b);
}
//编写一个Compute接口的实现类
class ComputeImpl implements Compute {
// 对方法进行实现
public int sum(int a, int b) {
return a + b;
}
}
class MyMath{
public void myMath(Compute c, int x, int y){
int retValue=c.sum(x,y);
System.out.println(x +"+"+y+"="+retValue);
}
}
public class Test02 {
public static void main(String[] args) {
MyMath mm = new MyMath();
// 使用匿名内部类
// 这里表面上看上去好像是接口可以new了,实际上不是接口可以new了
// 后面的{}代表了对接口的实现
// 不建议使用匿名内部类,因为一个类没有名字,没有办法重复使用。
// 另外代码太乱,可读性太差!
mm.myMath(new Compute() {
public int sum(int a, int b) {
return a + b;
}
}, 100, 200);
}
}
//负责计算的接口
interface Compute {
// 抽象方法
int sum(int a, int b);
}
class MyMath {
public void myMath(Compute c, int x, int y) {
int retValue = c.sum(x, y);
System.out.println(x + "+" + y + "=" + retValue);
}
}
原文:https://www.cnblogs.com/yxc-160206/p/13228188.html