第一章 面向对象高级
01.static 关键字
1.static介绍:
static可以修饰成员变量和成员方法
2.static特点:
- 被修饰的成员是共享的,但是只存储一份
- 静态只能访问静态
- 随着类的加载而加载,优先于对象存在
- 可以用类名.调用
3.工具类:
被static修饰的方法,提高了代码的复用性和维护性
4.static的注意事项:
static中没有this关键字
02.继承
1.继承的介绍:
是类与类中的一种父子关系,当多个类之间产生了共性的关系,且这些关系中存在is…a…的关系时,就可以使用继承关系,这种关系建立之后,子类以调用父类中非私有的成员(私有成员可以被继承,只是不能直接使用)
2.继承中对成员变量的访问特点:
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
}
}
3.继承中对成员方法访问的特点:
- 子父类中,出现相同的成员方法(方法名,参数,返回值),在子类对象中调用该方法,则调用的是子类中的方法
- 原因:子类对该父类方法进行了重写
4.方法重写(override)
- 当子类对父类中的方法逻辑感到不适用时,可以对方法进行重写(又称为方法覆盖,方法覆写)
- 子类进行方法重写时,需要保证方法的方法名,参数,返回值完全一致,可以用注解@Override来检测是否重写
- 注意:
- 父类中私有方法子类无法重写
- 子类中重写的方法访问权限必须大于或等于父类
5.权限修饰符
修饰符名称 | 同一个类中 | 同一个包中 | 不同包的子类 | 不同包的无关类 |
---|---|---|---|---|
private | √ | |||
(default) | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
6.Java中的继承特点:
不可以多继承,但是可以多层继承
7.继承中构造方法的访问特点:
-
父类的构造方法子类无法继承,只能自己写,因为构造方法名必须和类名保持一致
public class Fu{ public Fu (){ } } public class Zi extends Fu{ public Zi(){ } }
-
子类对象初始化之前必须完成父类的初始化,因为可能会用到父类的数据,只要能访问到构造方法,就可以完成初始化操作,而在所有构造方法中 (Object类除外),都默认隐藏着一句话 super();因此,子类可以通过这句话来访问父类的空参构造方法,从而初始化父类.
-
问题:但是当父类没有空参构造时,子类的super();怎么办?
回答:子类可以将所需要的数据,通过有参构造方法接收,其中父类有的数据,就通过super();交给父类完成初始化
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Student extends Person {
private int score;
public Student() {
}
public Student(String name, int age, int score) {
super(name, age);
this.score = score;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
public class Test {
public static void main(String[] args) {
Student stu = new Student("阿芷",23,100);
System.out.println(stu.getName() + "---" +
stu.getAge() + "---" + stu.getScore());
}
}
8.this和super关键字
this关键字调取本类成员,super关键字调取父类成员
this关键字和super关键字不可以共存
03.final关键字
1.final关键字特点:
-
final关键字可以修饰类,方法,变量,被final修饰的类不可以被继承,被final修饰的方法不可以被重写,被final修饰的变量不可以被修改,所以又被称为常量.
-
常量的命名规范:
-
一个单词:所有字母大写
MAX
PI -
多个单词:所有字母大写,中间使用 _ 分隔
MAX_VALUE
MIN_VALUE
-
-
被final修饰的基本数据类型是数据值不可以被修改
-
被final修饰的引用数据类型是地址值不可以被修改
-
被final修饰的变量完成初始化的时机:构造方法完成前.