以下自定义的简单类中,分析涉及的基础知识
//设计原则,设计模式的理解应用
//面向接口编程
public interface InterfaceTest {
int p=3; //接口中定义属性默认public static final
int k=6;
void test1();
AbstraceTest1 at=new Test2(); //依赖倒转原则? 组合模式
}
//接口隔离原则
public abstract class AbstraceTest1 implements InterfaceTest {
int p=1;//接口变量和类变量关系
//特别标记 去掉下一行Test2注释 ,看看结果如何?
//Test2 at=new Test2();
abstract void test();
public void test1(){
System.out.print("AbstraceTest1.test1()");
}
public AbstraceTest1(){
System.out.println("AbstraceTest1 construct");
}
}
//里氏代换原则
public class Test2 extends AbstraceTest1 implements InterfaceTest{//违反接口隔离原则?
public Test2(){
super();
System.out.println("Test2 construct");
}
int p;//子类变量与父类变量关系
@Override
void test() {
System.out.println("Test2.test():InterfaceTest.p:"+InterfaceTest.p);
}
//继承性多态
@Override
public void test1() {
++p;
System.out.println("Test2.test1():p:="+ p);
}
//参数性多态
public void test3(String name) {
System.out.println("Test2.test3():name:="+ name);
}
public void test3(int age) {
System.out.println("Test2.test3():age:="+ age);
}
public void innertest3(){
Test3 t=new Test3();
t.innerTest();
}
class Test3{//内部类
int q;
int m=0;
public void innerTest(){
System.out.println("Test3 innerTest p :"+p);
System.out.println("Test3 innerTest q:"+q);
System.out.println("Test3 innerTest m:"+(++m));
}
}
public void innertest4(){
Test4 t=new Test4();
t.innerTest();
}
static class Test4{//静态内部类
int q;
int m=0;
public void innerTest(){
System.out.println("Test4 innerTest q:"+q);
System.out.println("Test4 innerTest m:"+(++m));
}
}
}
public class Test {
public static void main(String[] args) {
//以下可认为是组合模式
Test2 t2=new Test2();
t2.test1();
t2.test();
t2.at.test1();
AbstraceTest1 t1=new Test2();
t1.test1();
t1.test();
InterfaceTest t3=new Test2();
t3.test1();
Test2.Test3 innert3= new Test2().new Test3();
innert3.innerTest();
Test2.Test4 innert4=new Test2.Test4();
innert4.innerTest();
AbstraceTest1 t4=new AbstraceTest1(){
@Override
void test() {
System.out.println("t4.test():k="+(k));
}};
t4.test1();
t4.test();
}
}