这节课重点学习了继承,关键词 extends,相比前两节课,感觉轻松一点。 父类也叫基类,子类也叫派生类
复用类
1. 定义:重复使用的类
2. 表现形式:
① 组合:新建的类包含其它现有的类
1) 汽车(SedanCar、Truck)
a. 车窗(Window)
b. 车门(Door)
c. 车轮(Wheel)
d. 车身(Body)
② 继承:新建的类承自于旧的类
1) 语法:
java中所有的类都直接或间接继承Object
i. 直接 Obejct->Test
ii. 间接 Obejct->Test->AA
2) 格式:访问修饰词 class类名extends父类(基类)
3) 特点:
a) 父类的public属性可以直接给子类使用
b) 子类与父类拥有同名属性,使用的是子类的属性(就近原则/隐藏)
c) 子类与父类拥有相同方法,使用的是子类的方法(就近原则/覆盖)
d) 子类与父类拥有相同方法,但子类的方法参数与父类不同(重载)
e) 同名方法,子类方法的修饰词必须大于父类
3. 继承时
protected 不写
同包下的子类 可用 可用
跨包下的子类 可用 不可用
4. super关键词
① 调用构造器
1) 构造器不被继承
2) 默认调用父类缺省构造器
3) 调用构造器要写在代码首行
② 调用属性
③ 调用方法
5. 继承时初始化顺序
① 无继承:静态---非静态--构造器
② 继承:父类静态-子类静态-父类非静态-父类构造器-子类非静态-子类构造器
6. final关键词
① 属性
1) 被final修饰过的属性称为常量
2) 被final修饰过的属性一定要赋初值
3) 被final修饰过的属性不能修改值
4) 被final修饰过的对象属性不能被重新实例化,但对象属性中的值可以被修改
5) final属性可以用构造器赋初值,但是必须所有的构造器都给它赋初值;
6) 静态空白final属性不能再构造器赋初值
② 方法
1) 被final修饰过的方法不能被子类重写
③ 类
1) 被final修饰过的类不可以被继承
复制代码
作业:编写一个基类Person类,子类Student类,使用带参数的构造器Student(int id)对域id初始化,并把参数id通过构造器传给基类构造器Person(int id)
public class Person {
int id;
int age;
double weght;
public Person(int id){
this.id=id;
}
}
复制代码
public class Student extends Person {
public Student(int id){
super(id);
}
public static void main(String[] args) {
Student stu=new Student(1);
}
}
复制代码