static关键字
修饰成员变量,方法,块。
变量:
a:随着类的加载而加载
b:生命周期比较长。
c:所有的对象够共享,存放在共享区。
d:可以类名点形式调用。
方法: 静态方法。
a:访问受局限 静态方法当中只能访问静态。
b:优于对象存在,类名.方法名调用。 不能出现this关键。
块:
静态块:给类进行初始。
static{
}
执行顺序: 静态块,动态块,构造器。
静态块 动态块 构造器
工具类: 对外提供一些通用性的功能。 构造器时私有的。
类当中所有的方法都是静态。
二: 设计模式
解决某一类问题行之有效的方法。
java当中存在23种设计模式。 23设计模式 可以解决现实生活当中的任何问题。
单例模式: 对外只提供一个对象。
单例模式的实现:
饿汉模式:
步骤:
(1)提供一个本类私有,静态,final 对象 作为成员变量,并且个成员变量进行赋值。
(2)私有的构造器,目的,不允许对完创建对象。
(3)对外提供一个公共的方法。方法返回当前对象的实例。
懒汉模式:
(1) 提供一个私有的,静态的本类成员变量。未进行初始化。
(2)私有的构造器,目的,不允许对完创建对象。
(3)对外提供一个公共的方法。方法返回当前对象的实例。
建议:懒汉模式会出现多线程安全问题,所以建议大家使用饿汉模式。
三: 封装:
1:定义: 将私密的数据或者是功能影藏起来,隐藏了内部的实现细节。对外提供公共的访问方法。
2: 优点:
a:隐藏了内部的实现细节。
b:保护了数据安全。
3:
数据成员私有化: private
get set方法。
public 返回值 getXxx(){
return xxx;
}
设置值: set方法:
public void setXxx(String str){
this.str=str;
}
四:继承:
1:定义: 一个类A得到了类B的全部内容(除了私有和构造器之外),那么类A称之为继承了类B。
那么类A称之为:子类。 派生类 :sub
B类称之为:父类。基类。超类 sup
2: 语法:
public class subClass extends supClass{
//得到父类的成员: 包括除了私有的属性和构造器之外的成员。
// 扩展子类自己的属性。
// 扩展自己的行为
}
3: 继承有什么优势:
(1)减少了代码的冗余。
(2)实现多态机制的前提。
4: 继承的使用要点:
a:父类的私有属性不能被继承。
b:父类的构造器不能被子类继承,但是可以通过super关键字,完成对父类构造器的调用。
完成从父类当中继承过来的一些属性的初始化动作。
c:在子类当中扩展自己的新功能:
五:在类族当中构造器的使用要点: (面试问题)
(1)在父类当中定义了有参数的构造器,那么系统就不会默认给提供无参数构造器了。
在子类当中,构造器的第一条语句处,默认使用super关键字调用了父类的无参数构造器。
所以在给父类提供了有参数构造器之后,要默认给提供一个无参数构造器,否则报错。
(2)在具有继承关系的类族当中,静态块,动态块,构造器的执行顺序:
a:具有继承关系的类族当中构造器的执行顺序:先执行父类的构造器,后执行子类的构造器。
b:具有继承关系的类族当中,动态块,构造器的执行顺序: 先执行父类的动态块,再执行父类的构造器。
最后执行子类的动态块,子类的构造器。
c:具有继承关系的类组当中静态块,动态块,构造器执行顺序:
先执行父类的静态块,后执行子类的静态块。
再次执行父类的动态块,和构造器
最后执行子类的动态块,子类构造器。
六:方法的重写(重点)
1:子类对父类同名方法的覆盖,要求子类的返回值 参数列表,以及方法值类型必须相同。
访问权限修饰符: 子类的访问权限必须大于等于父类的访问权限。
父类如果抛出了异常,子类可以抛出异常,也可以不抛出异常。
如果子类抛出异常,那么抛出的异常类型必须小于等于父类的异常类型。
访问权限: public protected 默认的 private
七:final关键字
(1)final可以修饰变量,修饰的变量称之为常量。 值不允许改变。
(2)final还可以修饰类: 被final修饰的类不能被继承。
(3)final还可以修饰方法,被final修饰的方法不能被重写。
八:super关键字:
(1)用在子类的构造器当中的第一条语句处,表示调用父类的构造器。
super(name);
(2)调用父类被字符覆盖掉的方法;
九:继承的弊端:
(1)继承只能单继承。
(2)继承使得父类和子类的关系过于紧密,耦合度高。不利于系统的扩展。