一、
1. 类变量:
-
static变量是同一个类所有对象共享。
-
类变量在类加载的时候就生成了,所以即使没有创建对象实例也可以访问。
-
也可以通过创建对象实例来访问。
-
类变量的访问依然要遵守相关的访问权限。
2. 类变量使用细节:
(1)什么时候需要类变量:
当我们需要让某个类的所有对象都共享一个变量时,就可以用静态变量(类变量)
(2)类变量与实例变量的区别:
类变量是该类的所有对象共享,而实例变量是每个对象独享的
(3)加上static称之为类变量或静态变量,否则称为实例变量/普通变量/非静态变量
(4)类变量可以使用 ( 类名 . 类变量名)方式访问
(5)实例变量不能通过(类名. 变量名)访问
3. 类方法(静态方法):
-
访问修饰符 static 数据返回类型 方法名( ){ }
-
类方法的调用:(类名. 类方法名) 或者 (对象名 . 类方法名)
4. 总结:静态方法,只能访问静态成员变量; 非静态方法,可以访问所有的成员变量
二、
1. main方法:可以直接调用main方法所在类的静态方法或静态属性;但不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员
2. 代码块:又称为初始化块,属于类中的成员,即是类的一部分,类似于方法,将逻辑语句封装在方法体中,通过{ }包围起来。
3. 单例模式:
-
所谓类的单利设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法
-
两种方式:饿汉式、懒汉式
4.单例模式具体步骤:
-
构造器私有化 ,防止直接new
-
类的内部创建对象
-
向外暴露一个静态的公共方法,getinStance
5.final关键字:
6.抽象类Abstract:当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,这个方法就是抽象方法,用abstract来修饰该类就是抽象类。
(8) 抽象方法不能使用private、 final、和static 来修饰。
(9)抽象模板设计模式
7. 接口(Interface):接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。
8.接口细节:
-
接口不能被实例化
-
接口中的所有方法都是public,接口中的抽象方法,可以不要abstract修饰
-
一个普通类实现接口,就必须将所有的方法实现
-
抽象类实现接口可以不要实现接口的方法
-
一个类可以同时实现多个接口
-
接口中的属性,只能是final, 而且是public ,static ,final,修饰符
-
接口中的属性访问形式:接口名. 属性名
-
接口不能继承其他的类,但是可以继承多个别的接口
-
接口的修饰符只能是public ,和默认,和类的修饰符一样
9. 继承类 VS 实现接口 :
-
实现接口是对java单继承机制的一种补充。
-
继承的价值在于:解决代码的复用性和可维护性
-
接口的价值在于:设计好各种规范的方法,让其他类去实现这些方法,即更加灵活
-
接口比继承更加灵活,在一定程度上实现代码解耦(即:接口规范性+动态绑定)
10. 接口的多态特性:
-
多态参数
-
多态数组
-
接口存在多态传递现象
三、内部类
1.内部类 (难点):
2.局部内部类:
-
定义在外部类的局部位置,通常在方法或代码块中
-
可以直接访问外部类的所有成员,包含私有的
-
不能添加访问修饰符,但是可以用fianal修饰
-
作用域:仅在它定义的方法体和代码块内
-
局部内部类可以直接访问他的外部类的成员
-
外部类在方法中,可以创建对象,然后调用方法即可
-
本质任然是一个类
-
如果外部类和局部类部类的成员重名时,默认遵循就近原则,如果想访问外部类的成员,使用外部类名. this. 成员 去访问。
3.匿名内部类:本质是类;内部类;没有名字;是一个对象
-
是定义在外部类的局部位置,比如方法中,并且没有类名。
-
基于接口的匿名内部类:
-
匿名内部类使用一次,就不能再使用
-
基于类的匿名内部类:
-
基于抽象类的匿名内部类:
4.注意细节:
-
即是一个类的定义,同时也是一个对象
-
外部其他类,不能访问匿名内部类
5.成员内部类:定义在外部类的成员位置。
-
可以直接访问外部类的所有成员,包含私有的
-
可以添加任意的访问修饰符
-
作用域:整个类体
-
成员内部类访问外部类:直接访问
-
外部类访问成员内部类:创建成员内部类的对象,然后使用相关的方法
-
外部其他类,使用成员内部类三种方式:
6.静态内部类:
-
定义在外部类的成员位置,并且有static
-
可以直接访问外部类的所有静态成员,包含私有的,但不能直接访问非静态成员
-
作用域:整个类体
-
外部其他类 访问 静态内部类:因为静态内部类,可以通过类名直接访问(前提满足访问权限)
7.小结:四种:局部、匿名、成员、静态 内部类。