javase__进阶 day1
static关键字
static 关键字 : 修饰符, 可以修饰成员变量, 成员方法
static 关键字特点:
-
被类的所有对象所共享
-
多了一种调用方式, 可以通过类名进行调用 (推荐使用类名调用)
-
随着类的加载而加载, 优先于对象存在
成员方法什么时候加入 static
- 常用于制作工具类
- 工具类: 不是描述事物的, 而是帮我们完成一些事情 (打工)
如果发现一个类中, 所有的方法, 全都是 static 所修饰
- 私有该类的构造方法
- 目的: 为了不让其他类, 再创建对象
注意事项:
-
static 方法中, 只能访问静态成员 (直接访问)
-
static 中不允许使用 this 关键字
通过static关键字重新认识 main 方法
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
-
public: 被JVM调用,访问权限足够大
-
static: 被JVM调用,不用创建对象
因为main方法是静态的,所以测试类中其他方法也需要是静态的
-
void: 被JVM调用,不需要给JVM返回值
-
main: 一个通用的名称,虽然不是关键字,但是被JVM识别
-
String[] args: 以前用于接收键盘录入数据的,现在没用
继承
继承的含义:
- 继承:让类与类之间产生关系(子父类关系),子类可以直接使用父类中非私有的成员
继承的特点:
- Java只支持单继承,不支持多继承,但支持多层继承
继承的格式
-
格式:public class 子类名 extends 父类名 { }
-
范例:public class Zi extends Fu { }
-
Fu:是父类,也被称为基类、超类
-
Zi:是子类,也被称为派生类
什么时候使用继承?
- 当类与类之间,存在相同(共性)的内容,并且产生了is a的关系,就可以考虑使用继承,来优化代码。
继承中成员的访问特点
成员变量
-
this:调用本类成员
-
super:调用父类成员
public class Fu { int num = 10; }
class Zi extends Fu { int num = 20; public void method(){ int num = 30; System.out.println(num); // 30 System.out.println(this.num); // 20 System.out.println(super.num); // 10 } }
成员方法
-
方法重载(Overload) : 在同一个类中, 方法名相同, 参数不同, 与返回值无关
参数不同: 类型不同, 个数不同, 顺序不同 -
方法重写(Override) : 在子父类当中, 出现了方法声明一模一样的方法 (方法名, 参数, 返回值)
-
在继承体系中,子类可以继承到父类的方法
但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改
这就需要采用方法的重写,方法重写又称方法覆盖
注意事项:
-
父类中私有方法不能被重写
-
子类重写父类方法时,访问权限必须大于等于父类
权限修饰符表:
权限修饰符 | 同一个类中 | 同一个包中 | 不同包的子类 | 不同包的无关类 |
---|---|---|---|---|
private | √ | |||
(default) | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
this 和 super
-
this:代表本类对象的引用
-
super:代表父类存储空间的标识
关键字 | 访问成员变量 | 访问成员方法 | 访问构造方法 |
---|---|---|---|
this | this.本类成员变量; | this.本类成员方法(); | this(); this(…);本类构造方法 |
super | super.父类成员变量; | super.父类成员方法(); | super(); super(…);super(); super(…); |
super 调用父类成员的省略规则 :
super.父类成员变量 | super.父类成员方法()
-> 被调用的变量和方法, 在子类中不存在, super.可以直接省略的
注意:this() 和super()都在争夺构造方法第一行的位置,所以二者不能共存
final 关键字
含义
final 关键字是最终的意思,可以修饰(方法,类,变量)
final 修饰的特点
-
修饰方法:表明该方法是最终方法,不能被重写
-
修饰类:表明该类是最终类,不能被继承
-
修饰变量:表明该变量是常量,不能再次被赋值
-
基本数据类型: 数据值不可改变
-
引用数据类型: 地址值不可改变, 但是内容可以改变
final修饰成员变量的注意事项 :
-
final修饰成员变量, 不允许修饰默认值
2. final修饰成员变量的初始化时机1). 在定义的时候直接赋值 2). 在构造方法中完成赋值
final修饰变量的命名规范 :
- 如果变量名是一个单词, 所有字母大写 max MAX
- 如果变量名是多个单词, 所有字母大写, 中间使用下划线分割 maxValue MAX_VALUE