static关键字
静态变量:
访问方式: 类名.静态变量(推荐) 。 对象名.静态变量
内存特点: 内存只有一份,类加载时,静态变量就会在内存出现,存在静态区中
静态变量被所有对象共享使用
静态方法:
调用格式: 类名.方法名(推荐). 对象名.方法名
使用注意: 1,静态方法只能访问静态变量 。 在一个静态方法里面,静态的只能访问静态的,在一个非静态方法里,可以访问非静态或者事静态方法
2,静态方法不能使用this和supper等代表对象的关键字
应用场景: 工具类的设计 : 1,方法都是静态方法,方便调用
2,工具类的构造方法通常会被私有
构造代码块:
格式: 类中方法外 { }
构造代码块执行时机: 每次调用构造方法之前,都会执行构造代码块
构造代码块的作用: 抽取多个构造方法的相同的代码,提高复用性
静态代码块
格式: static { }
特点: 静态代码块只会执行一次
执行时机: 类被加载的时候,静态代码块就会执行,而且只会执行一次
工具类
工具类的方法都是静态的,目的就是为了让调用方便使用
工具类分 。构造方法私有 。 不让外界去创建对象
this与super区别
this: 代表本类对象的引用
访问成员变量: this.成员变量 ,访问本类成员变量
访问成员方法: this.成员方法() 。访问本类成员方法
访问构造方法 : this.() 。 访问本类构造方法
super:代表父类存储空间的标识
访问成员变量: super.成员变量 。访问父类成员变量
访问成员方法: super.成员方法(), 访问父类成员方法
访问构造方法: super.() 。访问父类成员变量
继承
格式: public 类名 extends 父类{. }
继承的特点: 类只能单继承, 可以多层级继承
super: 在父类中 。有相同的属性或者方法时,访问父类的属性
调用: super.父类变量
super.父类方法
重写覆盖 :方法名和参数相同
设计理念: 要继承父类的方法,又觉得功能不够强大,子类在继承之后去扩展功能
子类继承父类的方法,并对方法重新实现功能
格式要求:
方法名和参数一样
返回值类型通常是一样(如果是引用类型,子类的方法返回值可以是父类方法返回的子类)
子类方法的权限要大于或者等于父类方法返回的子类
父类私有的方法不可以重写
子类创建对象的特点:
子类创建对象时,会先调用父类的无参构造方法
子类的构造方法的第一行,有默认的super()
调用父类的带参构造方法 : super(实参)
权限修饰符
public > . protected. > 缺省. > private
final关键字
修饰类 : 类不能被继承(String类就是final类)
修饰方法: 方法不能被重写
修饰变量: 基本类型 : 变量数据值不能修改
引用类型 : 变量地址不能修改
抽象类
格式: public abstract class 类名{. }
抽象类与抽象方法的关系: 有抽象方法的类一定是抽象类,抽象类可以没有抽象方法
子类继承抽象类,要重写方法,否则子类也是抽象类
抽象类与普通类的区别: 有得有失
得到可以定义抽象方法的功能
失去创建对象的能力,除此之外,普通类可以定义的,抽象类都可以
接口
格式: public interface 接口名{ . }
作用: 接口用于定义抽象方法,规范功能,实现代码的解耦
接口与类的关系:
多实现,关键字是. implements
一个类可以实现多个接口
public class 类名 implements. 接口1,接口2{. }
一个类实现接口,要重写接口的全部抽象方法
接口与接口的关系:
多继承,关键字是. extends
一个接口可以继承多个接口
public class 类名 extends 接口1,接口2{. }
接口的组成成员
jdk7及之前: 常量. 默认使用 public static final 修饰
抽象方法 默认使用 public abstract修饰
jdk8之后: 默认方法
静态方法
私有方法(成员方法和静态方法)
抽象类与接口的区别:
相同的: 都不能创建对象
不同点:
1, 类只能单继承,接口可以被多实现
2,抽象类可以定义任何成员,接口只能方法跟常量
3,抽象类有构造方法,接口没有
4,抽象类抽取子类共性的属性和方法,而接口只能定义方法和常量
单列设计模式
单列模式: 保证一个类中只有一个对象
饿汉式:
1,私有构造方法
2,提供一个静态对象,定义时就创建好对象
3,提供一个公开的静态方法,返回唯一的对象
懒汉式:
1,私有构造方法
2,定义变量
private. static 类名. 对象名 = null;
3,提供一个公开的静态方法,返回唯一的对象
4,判断这个是否为空,如果没有,就创建对象
区别:
懒汉式是什么时候用到了什么时候在new,饿汉式式提前就给new好了
内存占用: 懒汉式内存占用小
运行效率: 饿汉式效率更高
类和对象
类: 类是对现实生活中的一些行为跟属性组成的
属性:该事物的各种特征. 类中方法外的变量
行为:该事物存在的功能 通过成员方法表示
类的组成: 属性与行为
类是对现实生活中一类的具有共同的属性和行为的事物的抽象
对象: 是能够看的到的实体
类是对象的描述,对象是类的实体
两种编程思想:
面向过程: 实现功能的每一步都是自己做
面向对象: 指挥对象帮我们做事情
成员变量和局部变量
成员变量: 类里方法外
局部变量: 方法中的变量 。参数位置也是
区别: 成员变量. 局部变量
类中位置不同. 类中方法外. 方法内或者方法声明上(形参)
内存位置不同. 堆内存. 栈内存
生命周期不同. 随着对象的存在而存在, 随着方法的调用而存在,随着
随着对象的消失而消失. 方法的调用完毕而结束
初始化值不同. 有默认的初始化值 没有默认的初始化值,必须先定义,赋值,才能使用
封装
private 。私有的
可以修饰成员变量和成员方法/构造方法
被private修饰的成员只能在本类中访问
好处: 提高了代码的安全性
提高了代码的复用性
this关键字
作用: 区分同名的成员变量和局部变量. 有this吸收的变量就是代表类中的成员变量
this修饰 那个对象 调用这个this 。输出的就是那个成员变量
如果方法的形参 ,或者方法定义的局部变量跟类中的成员变量同名,更具 。就近原则 。
没有this修饰 的变量就是局部变量[形参]. 有this修饰的变量就是成员变量
通过this来区分同名的成员和局部变量 。有this修饰就是成员变量[方法不需要有成员变量和局部变量同名]
构造方法
特点:
1,没有void 。没有气她的返回值的类型
2,方法名只能与类名一致
3,方法中没有return
作用:
用来创建对象,我们可以使用构造方法 在创建对象的同时,去给成员变量赋值
格式:
public 类名(){ . }
注意事项:
只能通过new的时候调用,不能通过对象来调用
每一个java文件 。都会提供一个无惨构造
系统一开始会给我们提供体格默认放入无惨构造,但是,一旦你写了无惨构造,系统就不会给你,我们一般
创建一个类的时候,会把无参和含参构造都提供
若有收获,就点个赞吧