持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情
static
静态变量
被static修饰的成员变量,叫做静态变量
特点
- 被该类所有对象共享
- 不属于对象,属于类
- 随着类的加载而加载,优先于对象存在
调用方式
- 类名调用
- 对象名调用
静态方法
被static修饰的成员方法,叫做静态方法
特点
- 多用在测试类和工具类中
- Javabean类中很少会用
调用方式
- 类名调用
- 对象名调用
工具类
帮助我们做一些事情的,但是不描述任何事物的类
- javabean类:用来描述一类事物的类。比如,Student,Teacher,Dog,Cat等
- 测试类:用来检查其他类是否书写正确,带有main方法的类,是程序的入口
- 工具类:不是用来描述一类事物的,而是帮助我们做一些事情的类
书写规则
- 类名见名知意
- 私有化构造方法
注意事项
- 静态方法只能访问静态变量和静态方法
- 非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
- 静态方法中是没有this关键字的
总结:
- 静态方法中只能访问静态
- 非静态方法可以访问所有
- 静态方法中没有this关键字
继承
类与类之间的父子关系
- java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系
public class Student extends Person{}
- Student称为子类(派生类),Person称为父类(基类或超类)
- 继承后子类可以得到父类的属性和行为,可以直接使用
- 子类可以在父类的基础上新增其他功能,子类更强大
继承的好处
- 可以把多个子类中重复的代码抽取到父类中,提高代码的复用性
- 子类可以在父类的基础上,增加其他的功能,使子类更强大
什么时候用继承
当类与类之间存在相同(共性)的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码
特点
java只支持单继承,不支持多继承,但支持多层继承
-
单继承:一个子类只能继承一个父类
-
不支持多继承:子类不能同时继承多个父类
-
多层继承:子类A可以继承父类B,父类B可以继承父类C,C是A的间接父类,B是A的直接父类
-
每一个类都直接或间接的继承于Object类
public class Cat extends Animal{
public void catchMouse() {
System.out.println("猫在抓老鼠");
}
private void money() {
System.out.println("爸爸的私房钱");
}
}
此处若子类想要访问money则会报错,因为private不可被继承,子类只能访问父类中非私有的成员
子类到底能继承父类中的哪些内容?
| 构造方法 | 非私有 | private 不能 |
|---|---|---|
| 成员变量 | 非私有 能 | private 能 |
| 成员方法 | 非私有 | private |
成员方法能否被继承
虚方法
- 非private修饰
- 非static修饰
- 非final修饰
成员变量的访问特点
就近原则:谁近用谁
class Fu{
String name = "Fu";
}
class zi extends Fu{
String name = "Zi";
public void ziShow(){
String name = "ziShow";
System.out.println(name);//ziShow
System.out.println(this.name);//Zi
System.out.println(super.name);//Fu
}
}
- 就近原则,从局部位置开始往上找
- 有this,从本类的成员位置开始往上找
- 有super,从父类成员的位置开始往上找(最多只能调用一个super)