本文将介绍面向对象三大特征之一的继承
就是子类继承父类的属性和行为,使得子类对象可以直接具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。

继承可以让类和类之间产生父子关系。要注意的是两个类之间一定要有共同内容或者共性内容,且是父类的一种(如老师和学生都归属于人这个大类)

public class 子类 extends 父类{...}
public class Cat extends Animal{
...
}
方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。当父类的方法不能满足子类现在的需求时,需要进行方法的重写


@Override:放在重写后的方法上面,以校验子类重写时语法正确性public class Animal {
public void run(){
System.out.println("动物跑的很快!");
}
public void cry(){
System.out.println("动物都可以叫");
}
}
public class Cat extends Animal {
// 声明不变,重新实现
// 方法名称与父类全部一样,只是方法体中的功能重写写了!
@Override
public void behaviour(){
System.out.println("会发出呜呜声");
}
}
super():写在第一行,有参构造时一定要手动添加
class Person {
private String name;
private int age;
public Person() {
System.out.println("父类无参");
}
// getter/setter省略
}
class Student extends Person {
private double score;
public Student() {
//super(); // 调用父类无参,默认就存在,可以不写,必须再第一行
System.out.println("子类无参");
}
public Student(double score) {
//super(); // 调用父类无参,默认就存在,可以不写,必须再第一行
this.score = score;
System.out.println("子类有参");
}
}
public class Test {
public static void main(String[] args) {
Student s1 = new Student();
System.out.println("----------");
Student s2 = new Student(99.9);
}
}
父类无参
子类无参
················
父类无参
子类有参
用IDEA来测试一下
public class test1 {
public static void main(String[] args) {
Zi z = new Zi();
z.ziShow();
}
}
class Fu{
String name = "Fu";
}
class Zi extends Fu{
String name = "Zi";
public void ziShow(){
String name = "ziShow";
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
}

原理如下

用IDEA实现一下
public class Test {
public static void main(String[] args) {
Teacher t = new Teacher();
t.lunch();
}
}
class Person{
public void eat(){
System.out.println("吃饭");
}
}
class Teacher extends Person{
public void lunch() {
this.eat();
super.eat();
}
public void eat(){
System.out.println("吃面条");
}
}

其原理如下

继承中的知识点较多,并且还有方法的重写相关知识点,若有写的不足之处,请多多指正,接下来会讲述继承内关键字