内部类:
内部类编译后的字节码文件名:Outter$Inner(外部名$内部名)
class InnerDemo
{
public static void main(String[] args)
{
new Outer().getInner().print();
}
}
class Outer
{
private String name = "haoren";
class Inner
{
public void print(){
System.out.println(name);
}
}
public Inner getInner(){
Inner in = new Inner();
return in;
}
}
匿名内部类:
生成的class文件的命名规则:JavaDemo1$1
实例化接口
new AA(){ //class 1 implements AA,new 1()
public void test(""){
System.out.println("匿名内部类");
}
}.test();
new AA(){ //class 2 implements AA,new 2()
public void test(){
System.out.println("匿名内部类");
}
}.test();
interface AA{
void test();
}
内部类的扩展:
接口里边可以定义内部接口和抽象类
抽象类里也可以定义接口和抽象类
abstract class A{ //定义抽象A
public abstract void print1(); //定义抽象方法
interface B{ //定义内部接口
public void printB(); //定义抽象方法
}
}
class X extends A{ //继承抽象类
public void printA(){ //实现抽象方法
System.out.println("HELLO--> A");
}
class Y implements B{ //定义内部类实现内部接口
public void printB(){ //实现内部接口的抽象方法
System.out.println("HELLO--> B");
}
}
}
public class InnerExtDemo1{
public static void main(String args[]){
A.B b = new X().new Y(); //实例化内部接口对象
b.printB(); //调用内部接口的抽象方法
}
}
Object:
所有的类都是Object类的子类,,是所有对象的父类