----------------------------------------------------关于封装
修改属性的可见性private
创建getter/setter方法
在getter/setter方法中加入属性控制语句
static关键字
public static int ;// 静态属性/类属性
public static void eat(){}; // 静态方法/类方法
不可以添加到类 public static class Cat{} 不存在静态类
不可以存在方法中的静态局部变量 public Cat(){ static int num=14; }
public void run(String name){
{}//存在方法当中 ----普通代码块
}
{} //存在类当中的 —构造代码块
static{} //静态代码块
1静态成员的生命周期:类的加载时产生,销毁时释放,生命周期长
2静态方法中的成员调用:
可以直接访问类中的静态成员
不可以直接访问类中非静态成员,只能通过对象实例化之后通过对象的形式访问
3各种代码块的执行顺序(静态代码块只执行一次,构造代码块在每次对象构造的时候调用)
----------------------------------------------------关于继承
方法重载
1同一个类中
2方法名相同,参数列表不同(参数顺序/个数/类型) 就是可以重载
3方法返回值/访问修饰符任意 对重载没关系
方法重写
1有继承关系的子类中 叫方法重写
2方法名相同,参数列表相同(参数顺序,个数,类型),方法返回值 都要求相同才可以重写
3返回值类型与父类兼容
4访问修饰符,访问范围需要大于等于父类的访问范围
5与方法参数的名无关
关键字super:父类对象的引用
使用方法:super.eat(); 调用父类的构造方法:super(name,month);
注:子类构造默认调用父类无参构造方法,可以用super()调用父类允许被访问的其他构造方法,
super()必须放在子类构造方法有效代码的第一行
super.print();//访问父类成员方法 super.name;//访问父类属性 super();访问父类构造方法
this当前对象 super父类对象 都不能在静态方法被调用的
this(); //表示调用同类的无参构造方法 super同理
但是两个调用无参构造方法都要抢占第一行 一山容不了二虎
继承后的初始化顺序
父类静态成员->子类的静态成员->父类对象构造->子类对象构造
注:父类的构造方法不允许被继承/不允许被重写
Object是所有类的父类
final class: 该类没有子类 public final class / final public class
final 方法: 该方法不允许被子类重写,但是可以正常被子类继承使用
final 方法内局部变量: 只要在具体的使用之前进行赋值即可,一旦赋值不允许被修改
类成员属性:赋值过程: 1、定义直接初始化 2、构造方法 3、构造代码块
final 不可以修饰构造方法
引用数据类型 final 引用数据类型有:类 String System 数组…
例如 final Animal animal = new Animal(‘凡凡’,1); 如果animal = new Animal(); 变量就不可以重新赋值
对象里面的属性可以修改animal.month=12; 可以赋值
final static 或者 static final 可以定义全局不被修改的内容
例如配置信息:public static final String URL = “www.baidu.com”;
单例模式
目的:
使得类的一个对象成为该类系统中唯一的实例
定义:
一个类有且仅有一个实例,并且自行实例化向整个系统提供
要点:
1某个类只能有一个实例
2必须自行创建实例
3必须自行向整个系统提供这个实例
实现:
1只提供私有的构造方法
2含有一个该类的静态私有对象
3提供一个静态的公有方法用于创建 获取静态私有对象
饿汉懒汉
饿汉式 在类加载时就创建实例 加载速度快 空间换时间 (对象创建过程中 实例化)
懒汉式 在第一次使用时进行实例化 加载速度慢 时间换空间(静态公有方法中实例化)
饿汉式在多线程程操作时 线程安全
懒汉式在多线程并发操作 可能存在线程风险 有很多的方法解决:
1同步锁 2双重校验锁 3静态内部类 4枚举
----------------------------------------------------关于多态