教学内容总结
第五章 子类与父类
继承是一种由已有的类创建新类的机制
java不支持多重继承 即子类只能有一个父类
使用extends来定义类的一个子类
class Student extends People{
......
}
Java的类的树形结构
在Java的类按继承关系形成的树形结构中,根结点是Object类(是java.lang包中的类)
若一个类(除了Object类)的声明中没使用extends,这个类被系统默认为是Object的子类,即声明“class A”与“class A extends Object”等同
子类的继承性
1.子类和父类在同一包中的继承性
(公有 保护 友好)
2.子类和父类不在同一包中的继承性
(公有 保护)
protected的进一步说明
1.子类D自己声明的protected成员变量和方法 只要Other类和D类在同一个包中 object对象可访问protected成员对象和方法
2.子类D从父类继承protected成员变量和方法 只要Other类和A类在同一个包中,object对象即可访问继承的protected变量和方法
子类对象的生成:
先调用父类的构造方法完成父类部分的创建再调用子类的构造方法完成子类的创建,若子类没说明调用哪个父类构造方法则调用父类不带参数的构造方法
instanceof运算符
双目运算符 左对象 右类
当左面的操作元是右面类或其子类所创建的对象时,instanceof运算结果为true 否则false
成员变量的隐藏
1.若子类所声明的成员变量的名字和从父类继承来的成员变量的名字相同时(声明类型可不同),子类会隐藏所继承的成员变量
2.子类继承的方法只能操作子类继承和隐藏的成员变量
3.子类新定义的方法可以操作子类继承和子类新声明的成员变量 若要操作子类隐藏的成员变量则需使用super关键字
方法重写(覆盖)
重写的语法规则:
重写的目的:子类通过方法的重写可以隐藏继承的方法
重写注意:
- 不允许讲的方法的访问权限,但可以提高访问权限
- 参数列表必须与被重写的相同
- 返回值类型必须与被重写的相同
- 不能重写被标注final关键字的方法
- 可操作继承的成员变量、调用继承方法、操作子类新声明的成员变量、调用新定义的其他方法
- 不可操作被隐藏的成员变量和方法 (要用super)
super关键字
用super操作被隐藏的成员变量和方法
用super调用父类的构造方法
class Student{
int number;
String name;
Student(){
}
Student(int number,String name){
this.number=number;
this.name=name;
System.out.println("我的名字是:"+name+"学号是:"+number);
}
}
class UniverStudent extends Student{
boolean 婚否;
UniverStudent(int number,String name,boolean b){
super(number,name);
婚否=b;
System.out.println("婚否="+婚否);
}
}
public class Example5_8 {
public static void main(String args[]) {
UniverStudent zhang =new UniverStudent(9901,"何晓林",false);
}
}
final关键字
可修饰类 成员变量 和方法中的局部变量
变为常量
class A{
final double PI=3.1415926;
public double getArea(final double r) {
return PI*r*r;
}
public final void speak() {
System.out.println("hello, how's everything here?");
}
}
public class Example5_9{
public static void main(String args[]) {
A a=new A();
System.out.println("面积:"+a.getArea(100));
a.speak();
}
}
对象的上整型对象
- 对象的上整型对象能操作:隐藏的变量 继承的变量 继承或重写的方法
- 对象能操作:继承的变量 新增的变量 继承或重写的方法 新增的方法
继承与多态
上转型是多态的表现形式:通过父类子类方法的重写
代码调试中的问题和解决过程
有时候习惯把课本一些不同例题的程序放在同一个包里运行,导致因为方法名相同而运行错误。所以,不同例题代码尽量放在不同的包或是不同的的工程里进行运行。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/1 | 10/10 | |
第二周 | 300/500 | 1/2 | 15/25 | |
第三周 |
442/942 | 1/3 | 26/51 | (不要再当咸鱼了!!!) |
第四周 | 620/1120 | 1/4 | 10/61 | |
第五周 | 930/1430 | 1/5 | 12/73 | |
第六周 | 150/1580 | 1/6 | 3/76 | 要捋清思路再敲代码!! |