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;
}
这些代码有些不是特别会用,以后再理解。