20220727 第六组 张嘉源 学习笔记
代码块
类的内部结构:属性、方法、构造器、代码块、内部类
又叫初始化块,在Java中,使用{}括起来的代码被称为代码块,属于类的一个成员,将一些逻辑语句封装在方法体中
局部代码块:在方法中出现
实例代码块:在类中方法外出现,随着对象的创建而加载,创建一次对象构造代码块执行一次
{}
静态代码块:随着类的加载而加载,并且只执行一次,做一些初始化的工作
用static修饰,必须放在类下static{}
执行顺序
父类静态代码块 > 子类静态代码块 > main()方法 > 父类代码块 > 父类构造器 > 子类代码块 > 子类构造器
父类优于子类,静态优于其他
静态
static
用static修饰的结构不属于任何一个对象
静态修饰符
可以修饰属性、方法、内部类
变量
被static和final修饰过的实例常量,实例本身不能再改变了
被static修饰的变量叫静态变量(静态变量可以再静态语句块中初始化),没有被static修饰的变量叫实例变量
方法
静态方法可以直接通过类名调用(类名.静态方法名或类名.静态变量调用),任何的实例也都可以调用(实例方法中可以直接调用静态方法),因此静态方法中不能用this和super关键字
在静态方法中不可以直接调用实例方法(因为静态方法是属于类的,而实例方法是属于对象的,没有创建对象时也可以用静态方法,只有在实例化之后,静态方法才可以调用实例方法,实例化之后什么都可以调用)
静态结构是优先于对象就存在的
实例方法只能通过对象名.方法名调用
static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的
内部类
匿名内部类
本质是类,内部类,该类没有名字,同时还是一个对象
语法:new 类或接口 (参数列表){
类体
}
静态内部类
有static修饰
静态内部类不能直接访问外部类的非静态成员,但可以通过new 外部类().成员的方式访问
如果外部类的静态成员与内部类的静态成员相同, 可以通过"类名.静态成员"来访问外部类的静态成员;如果不同,可以直接调用外部类的静态成员名。
外部类
一般来说,外部类是定义在已设置主类的.java文件下的类。当在主类内部定义了一个内部类,主类成为了相对意义上的外部类。
设计模式
是人们为软件开发中抽象出可重复利用的解决方案
软件开发工程师之间沟通的“行话”
面向对象的设计原则
开闭原则
(Open Close Principle)对扩展开放,对修改关闭(继承,实现接口),可以通过“抽象约束,封装变化”来实现开闭原则
通过接口或者抽象类为软件定义一个相对稳定的抽象层
将相同的可变因素封装在相同的具体实现类中,派生一个实体类就可以了(就是继承或者实现)
里氏代换原则
在子类继承父类时,除了添加新的方法完成新增的功能外,尽量不要重写父类的方法
依赖倒转原则
要面向接口编程,不要面向实现编程
每个类尽量提供接口或抽象类,或者两者兼备
变量的声明尽量是接口或者是抽象类
任何类都不应该从具体类派生
在使用继承时要遵循里氏代换原则
接口隔离原则
使用多个隔离的接口
单例模式
一个类只能有一个实例(私有化构造器private Ch01)
饿汉式单例模式
不管以后会不会使用到该实例化对象,先创建了再说,很着急的样子
实现的办法就是直接new实例化
public class a{
public static a instance=new a();
private a(){
};
public static a getInstance(){
return instance;
}
}
懒汉式单例模式
(延迟加载)什么时候调用getInstance方法什么时候初始化(new)
public class b {
private static Singleton instance=null;
private Singleton(){
};
public static Singleton getInstance()
{
if(instance==null)
{
instance=new Singleton();
}
return instance;
}
}
内部类实现单例
也是懒汉式的一种,这种懒汉式没有线程的问题,结合了饿汉式和懒汉式的优点
浙公网安备 33010602011771号