1、重写<Override>,重载<Overloading>
重写相对于父类,重载下相对于本类,都是Java多态的一种表现形式。
2、java内部类
刚开始学,没必要对每个功能都细究,自顶向下,罗列如下:
<1>内部类定义:顾名思义,在类内部定义的类便是一个内部类
<2>内部类的简单例子:
public class OutClass() { public class InsideClass() {
... } }
<3>内部类的使用:(通过一个内部类来访问外部类成员变量)
public class Test2{
private int num ; public Test2(){ } public Test2(int num){ this.num = num; } private class Inner{ public Test2 getTest2(){ return Test2.this; } public Test2 newTest2(){ return new Test2(); } } public static void main(String [] args){ Test2 test = new Test2(5); Test2.Inner inner = test.new Inner(); Test2 test2 = inner.getTest2(); Test2 test3 = inner.newTest2(); System.out.println(test2.num); System.out.println(test3.num); }
}
输出结果为:5 0
解释:只要通过外部类新建了一个内部类对象,内部类便与外部类有了一定的关联,无须限制便可访问外部类成员变量、方法
用以下方法:外部类.this;
原理:在外部类创建内部类对象时,内部类会秘密的捕获一个指向外部类的引用,具体机制是编译器的问题,初期没必要细究
<4>内部类的封装与隐藏实现细节:
public class Example { private class InsideClass implements InterfaceTest { public void test() { System.out.println("This is test"); } } public InterfaceTest getIn() { return new InsideClass(); } }
//程序测试 public class TestExample { public static void main(String args[]) { Example a=new Example(); InterfaceTest a1=a.getIn(); a1.test(); } }
解释:很明显,Example类的InterfaceTest()方法返回的是一个,InsideClass对象,加上InsideClass又是私有的所以,我们如果不认真看代码,根本
看不到InsideClass的具体实现,这个备用,貌似比较高端
OK,就到这!