public class DemoTest {
public static void main(String[] args) {
//Inner1
/*静态内部类里有非静态方法的调用方式*/
Demo.Inner1 d1 = new Demo.Inner1();
d1.print1();
/*静态内部类里有静态方法的调用方式*/
Demo.Inner1.print11();
}
}
public class Demo {
/*该类在类的内部,所以称为内部类。
由于前面有static,所以称为"静态内部类"*/
static class Inner1{
public void print1(){
System.out.println("Inner1");
}
public static void print11(){
System.out.println("static Inner1");
}
}
}
2、实例内部类的调用方法
public class DemoTest {
public static void main(String[] args) {
//Inner2
Demo d2 = new Demo();
Demo.Inner2 inner2 = d2.new Inner2();
inner2.print2();
}
}
public class Demo {
/*该类在类的内部,所以称为内部类。
没有static叫做实例内部类。*/
class Inner2{
public void print2(){
System.out.println("Inner2");
}
}
}
3、局部内部类的调用方法
public class DemoTest {
public static void main(String[] args) {
//Inner3
new Demo().doSome();
}
}
public class Demo {
public void doSome(){
/*局部变量*/
int i = 1;
/*该类在类的内部,所以称为内部类。
局部内部类*/
class Inner3{
public void print3(){
System.out.println("Inner3");
}
}
new Inner3().print3();// 通过内部类的实例化对象调用方法
}
}
public interface Compute {
int sum(int a, int b);
}
public class Demo implements Compute{
@Override
public int sum(int a, int b) {
int c = a + b;
return c;
}
}
public class DemoTest{
public static void main(String[] args) {
DemoTest demoTest = new DemoTest();
demoTest.mySum(new Demo(),1,2);
}
public void mySum(Compute c, int x, int y){
int value = c.sum(x,y);
System.out.println(value);
}
}
2、使用匿名内部类后
代码示例:
public interface Compute {
int sum(int a, int b);
}
public class DemoTest{
public static void main(String[] args) {
DemoTest demoTest = new DemoTest();
/*demoTest.mySum(new Demo(),1,2);*/
demoTest.mySum(new Compute(){
public int sum(int a, int b) {
int c = a + b;
return c;
}
},1,2);
}
public void mySum(Compute c, int x, int y){
int value = c.sum(x,y);
System.out.println(value);
}
}
原文:https://www.cnblogs.com/yu011/p/12632744.html