静态代码块
静态代码块格式:
static{
}
特点
1.创建对象的时候会调用静态代码块。
2.静态代码块只执行一次。
3.静态代码块>构造代码块>构造函数。
构造代码块
构造代码块:
{
}
特点
1.执行构造函数的时候会调用构造代码块,也就说每调用一次构造函数,就 执行一次构造代码块。
2.构造代码块优先于构造函数执行。
3.静态的是随着类的加载而加载,非静态成员是随着对象的加载而加载。
4.静态代码块优先于构造代码块。
单例设计模式
单例:就是一个实例化,也就说只new了一次.也就是说一个对象被所有人共享。
饿汉式:
private static Person person=new Person();
public static Person getPerson(){
return person;
}
懒汉式:
private static Person person;
public static Person getPerson(){
if(person==null){
person=new Person();
}
return person;
}
封装:封装属性和实现细节,仅对外提供公共的方法进行访问。
封装构造函数:private
引用数据类型的默认值都是null
问题:
封装构造函数,然后去调用该类中非静态方法?
class Servlet1{
private Servlet1(){
}
private String name;
public void setName(String nn){
this.name=nn;
}
}
重写
重载: 方法名相同,参数类型或者参数个数不同。
重写: 也叫 复写,覆盖
子类方法跟父类方法相同。除了访问权限修饰符必须大于等于父类访问权限,其他都必须一直。
- 注意:私有的不能被重写。
多态
多态: 事物的多种存在形态。
体现: 父类引用指向子类对象。
格式:
-
父类 对象名=new 子类();
多态的特点:
1.访问非静态成员变量: 编译看父类 运行看父类
2.访问静态成员变量: 编译看父类 运行看父类
3.访问非静态成员函数: 编译看父类 运行看儿子
4.访问静态成员函数: 编译看父类 运行看父类
总结:多态编译都看父类,运行也看父类(除了非静态成员函数).