#static,final,抽象,接口,多态,内部类,单子和工厂设计模式

static

static 可用于修饰变量、方法。
在static方法中可用于静态方法和变量,不用非静态的;不用this和super等与对象相关的东西。

final

1)final修饰类表示此类不希望被继承。
2)final修饰方法表示此类不被重写
3)final修饰变量表示不允许被修改*(必须在定义是就被初始化)。

抽象类和抽象方法(abstract)

抽象类用abstract关键词修饰。在抽象类中可以没有抽象方法但抽象方法一定在抽象类中。
抽象方法中没有函数体。
抽象类可以被继承,用于重写抽象方法。

接口(interface)

接口可以看做是只有抽象方法的抽象类。
注意:接口强调的是一种能力。而不是像类一样。
例如:飞,是一种能力。鸟,飞机,蝙蝠,风筝。都可以飞。但他们不可以看做是一类。
接口特性
1)接口可以多继承(类只能单继承)即实现(implements)。
2)接口只允许有常量和抽象方法
3)常量的命名规则:全用大写字母,单词之间用“-”(下划线)隔开。

多态

父类的引用和子类的对象
多态是通过向上转型实现的。
例如

Person person = new Student();

在这里Person类是Student的父类。
若Person有多个子类。则子类的每个引用都可以看做是父类的类型。这样就可以实现多态了。
在多态中有一个关键词可用于向下转型的判断。即 instanceof
例如

Person person = new Student();
if(person instanceof Student){

}

instanceof 用于判断print引用是否是Student的引用,如果是就返回true
不是就返回false;这样在强制造型前判断一下就可以避免转型异常。

内部类

内部类顾名思义是在类中定义的类。
例如在Person类中定义了一个类Student
则在主函数中定义Student的对象是这样写的

Student zhangsan = new Person().new Student();

单子设计模式

单子设计模式是在主函数中的一个类只能有一个对象。
要实现这个目的可以有一下操作:
1)用private隐藏构造器
2)创建静态的用于创建此类的对象的方法。
3)创建静态对象的引用。
4)在方法中添加条件语句,用于控制对象的个数
例如

public class Students {
    private static Students instance;//第三步创建静态对象的引用
    //第一步,将构造器隐藏
    private Students(){

    }
    //第二步创建静态的可以创建对象的方法
    public static Students getInstance(){
        //第四步在方法中加条件语句。
        if(instance ==null){
            instance= new Students();
        }
        return instance;

    }
}

工厂设计法

并未深讲以后再理解先吧代码写下:
先创建一个properties文件用于被访问
如里面写上:print= Apple

public Paper CreatPaper(){
        Paper paper =new BjPaper();
        return paper;
    }
    public Print CreatPrint(){
        Properties  properties = new Properties();
        String s =" ";
        try{
            properties.load(new FileInputStream("config.properties"));
            s= properties.getProperty("print");
        }catch(IOException e){
            e.printStackTrace();
        }
        Print  print  = null;
        if(s.equals("Hpp")){
            print = new Printp();
        }else if(s.equals("Apple")){
            print = new ApplePrint();
        }
        return print;
    }

这些代码有些不是特别会用,以后再理解。

你可能感兴趣的:(#static,final,抽象,接口,多态,内部类,单子和工厂设计模式)