class A{
static String s1 = "这是A类中的静态成员";
String s2 = "这是A类中的实例成员";
// 实例内部类
class B{
String s2 = "这是内部类中的实例成员";
void f2(){
System.out.println("这是实例内部类中的实例方法");
// 访问外部类中的静态成员
System.out.println(s1);
// 访问外部类中的实例成员
A a = new A();
System.out.println(a.s2);
System.out.println(A.this.s2);
}
}
}
public class Demo1 {
public static void main(String[] args) {
// 创建外部类的实例
A a = new A();
// 创建内部类的实例
A.B b= a.new B();
b.f2();
}
}
class C{
static String s1 = "这是外类中的静态成员";
String s2 = "这是外部类中的实例成员";
// 静态内部类
static class D{
static String s1 = "这是静态内部类中的静态成员";
String s2 = "这是静态内部类中的实例成员";
static void f1(){
System.out.println("这是静态内部类中的静态方法");
System.out.println(C.s1);
System.out.println(new C().s2);
}
void f2(){
System.out.println("这是静态内部类中的实例方法");
System.out.println(C.s1);
System.out.println(new C().s2);
}
}
}
public class Demo2 {
public static void main(String[] args) {
// 访问静态内部类中的静态成员
System.out.println( C.D.s1);
C.D.f1();
// 访问静态内部类中的实例成员
// 创建内部类的实例
C.D d = new C.D();
System.out.println(d.s2);
d.f2();
}
}
class A1{
void show(){
System.out.println("这是A类中的方法");
}
}
public class Test4 {
// 匿名类
A1 a1 = new A1(){
@Override
void show() {
// super.show();
System.out.println("这是匿名类中的方法");
}
};
// 主方法
public static void main(String[] args) {
new Test4().a1.show();;
}
}
interface I3{
int max(int x,int y);
}
public class Test4 {
// 使用匿名类实现接口I3
I3 i3 = new I3(){
@Override
public int max(int x, int y) {
return x>y?x:y;
}
};
public static void main(String[] args) {
int result = new Test4().i3.max(20,50);
System.out.println(result);
}
}
e.g.
interface I4{
int max(int x,int y);
}
public class Test4 {
// 使用Lambda表达式实现接口I4
I1 i4 = (int a,int b)->{ return a>b?a:b; };
// 主方法
public static void main(String[] args) {
int y = new Test4().i4.max(30,40);
System.out.println(y);
}
}