目录
1.继承的概念与格式
继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
一般格式写作:
public class 子类名 extends 父类名 {
// 属性
// 方法
}
2.继承的内容及限制
- 子类可以继承到父类的哪些内容?
—所有的
- 子类以及子类的对象可以调用到继承的哪些属性和方法?
—属性、方法以及其他代码的访问权限修饰符
3.继承中的访问权限修饰符
- public: 即公有,整个项目下可以调用
- protected: 即受保护,同包下 / 其子类中可以调用
- private: 即私有,本类中可以调用/ 子类就不能直接调用
- 省略:默认同包中可以调用
//父类Student
package tzh0414;
public class Student {
public String name;
private int age;
protected String stu_id;
int score;
}
//子类UNstudent
package tzh0414;
public class UNstudent extends Student{
public void printInfo(){
System.out.println ("name: " + name);
//System.out.println ("age: " + age); //由于父类中age是private修饰,故此处无法调用
System.out.println ("stu_id: " + stu_id);
System.out.println ("score: " + score);
}
//父类Student在包tzh0414中
package tzh0414;
public class Student {
public String name;
private int age;
protected String stu_id;
int score;
}
//子类Postgraduate在包tzh04141中
package tzh04141;
import tzh0414.Student;
public class Postgraduate extends Student {
public void printInfo(){
System.out.println ("name: " + name);
//System.out.println ("age: " + age); //由于age在父类中是private修饰,只能在本类中调用
System.out.println ("stu_id: " + stu_id);
//System.out.println ("score: " + score); //由于score在父类中是省略情况,故只能同包调用
}
}
4.子类/父类方法相关问题
- 构造方法
- 在创建子类对象同时也会直接调用父类的构造方法
//父类的构造方法
public Student(String name, int age, String stu_id, int score) {
this.name = name;
this.age = age;
this.stu_id = stu_id;
this.score = score;
}
//子类的构造方法
public UNStudent(String name, int age, String stu_id, int score,int cet_4){
// 子类调用父类的构造方法
// super 关键字在子类中替代父类
super (name, age, stu_id, score);
this.cet_4 = cet_4;// 子类独有的属性赋值
}
- 方法重写
- 子类中可以重写父类的方法
- 格式要求是 与父类方法结构一致
- 子类以及子类对象优先调用子类重写之后的方法
//父类
public class Student{
//父类中的方法
public void printInfo(){
System.out.println ("name: " + name);
System.out.println ("age: " + age);
System.out.println ("stu_id: " + stu_id);
System.out.println ("score: " + score);
}
}
//子类
public class UNStudent extends Student {
//子类中重写父类的方法
public void printInfo(){
// 用super 来替代父类调用方法
super.printInfo ();
// 在父类方法的基础上 再增加子类的方法内容
System.out.println ("cet_4:" + cet_4);
}
5.this关键字
- 在每个类中指代本类的对象
- this(); 本类的构造方法调用
- this.方法名(); 表示调用本类的方法 以及本类继承的方法都可以调用
- this.属性名 表示 这个属性是当前类的属性 可以与 参数等一些变量做区分