类和对象、继承多态、抽象类接口
一、面向对象三大特征
封装、继承、多态(如果要四大特征,加上“抽象”)
1)封装:隐藏对象的属性和实现细节,仅对外公开接口,
控制在程序中属性的读和修改的访问级别
也就是要关注访问限定符、成员变量+成员方法
2)继承:继承就是子类继承父类的特征和行为,
使得子类对象(实例)具有父类的实例域和方法,
或子类从父类继承方法,使得子类具有父类相同的行为。(代码复用)
3)多态:
a.定义:同一个行为具有多个不同表现形式或形态的能力
一个类实例(对象)的相同方法在不同情形有不同表现形式
b.实现条件:继承关系或实现关系
方法重写
基类引用 引用派生对象 及接口的引用 引用实现接口的类对象。
二、final关键字
Final用于修饰类、成员变量和成员方法。
成员变量:final int INITSIZE = 10常量,不可变
成员方法:final void fun(){
}不允许重写,
但是可以被重载
类:final class String {
}不能被继承(String、StringBuilder、StringBuffer、Math,不可变类)
不能同时用abstract和final修饰类,他们起反作用
三、static关键字
我之前总结的 https://editor.csdn.net/md/?articleId=116900111
static作用
类变量:可以通过类名.变量名直接引用,而不需要new出一个类来
静态变量和实例变量的区别:1)存储位置:静态在方法区,实例在堆上
2)静态与类有关,一个类只有一份静态变量。实例与对象有关,几个对象几份实例变量
类方法:可以通过类名.变量名直接引用,而不需要new出一个类来
静态方法和实例方法的区别:1)调用方式不同,类名.静态方法,对象.实例方法
2)重写:静态方法不能被重写,private方法不被重写
类:静态内部类
静态内部类和实例内部类的区别:是否包含外部类对象的this
四、设计模式-单例模式
我之前的博客 https://editor.csdn.net/md/?articleId=116900111
条件:私有构造函数,公有静态函数,返回实例对象
懒汉模式
线程不安全,延迟初始化
public class Singleton {
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if (instance == null){
instance = new Singleton();
}
return instance;
}
}
饿汉模式
线程安全,开始就初始化容易产生垃圾
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){
}
public static Singleton getInstance() {
return instance;
}
}
全局锁式
线程安全,线程同步时效率不高(synchronized)
public class Singleton{
private static Singleton sin