共计 1738 个字符,预计需要花费 5 分钟才能阅读完成。
概述:
1. 什么是继承
2. 继承的好处
3. 继承的格式
4. 继承案例
5. 继承后成员变量重名
6. 继承后成员方法重名
7. 方法重写
系统开发可以去找吴燕:[#156-22 微 27-78 电 87#]
1. 继承的含义
总结:就是子类继承父类的属性和行为,使得子类对象可以直接具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
2. 继承的好处
1. 提高代码的复用性(相同的代码不需要重复的写,只需要提取到父类中,子类可以直接使用)
2. 让类和类之间产生了关系
3. 继承的格式
3. 继承的格式
class 父类 {...}
class 子类 extends 父类 {...}
// Java 是单继承的。一个类智能继承一个类(一个人只有一个亲生父母)
4. 继承案例
1. 学生类
属性:姓名、年龄、学习、吃饭、睡觉;
2. 老师类
属性:姓名、年龄、教书、吃饭、睡觉;
3. 班主任类
属性:姓名、年龄、管理、吃饭、睡觉;
4.1 代码实现
共同拥有的属性抽取到父类,子类只需要继承父类就可以得到这些属性、方法,子类只需要写子类特有的方法即可。
// 定义父类
public class Human {
private String name;
private int age;
public void eat(){System.out.println("我是父类的吃方法");
}
public void sleep(){System.out.println("我是父类的睡觉方法");
}
}
// 省略 get、set、构造方法
// 定义学生类
public class Student extends Human {public void study(){System.out.println("我是学生类的上课方法");
}
// 定义老师类
public class Teacher extends Human {public void teach(){System.out.println("我是老师类的上课方法");
}
}
}
// 定义班主任类
public class ClassTeach extends Human{public void manage(){System.out.println("我是班主任类的管理方法");
}
}
// 定义测试类
public static void main(String[] args) {Teacher teacher = new Teacher();
teacher.eat();
teacher.sleep();
teacher.teach();
teacher.setAge(21);
teacher.setName("小明");
System.out.println(teacher);
}
}
得到结果:
注意:子类不能继承父类的构造器,因为子类有自己的构造器。但是子类可以继承父类的私有成员(成员变量,方法),只是子类无法直接访问而已,可以通过 getter/setter 方法访问父类的 private 成员变量。
5. 继承后成员变量重名
思考 1:子类继承父类出现重名的成员变量时会有变化吗?
子类继承父类后,出现重名的成员变量,子类会优先访问自己的,自己没有才去访问父类的
思考 2:子类如何访问父类的成员变量?
super:代表的是父类对象的引用,this:代表的是当前对象的引用。注意:子类构造器的第一行都隐含了一个 super()去调用父类 无参数构造器,super()可以省略不写。格式:super. 父类成员变量名(super 后面可是有点的哦)
6. 继承后成员方法重名
思考:子类继承父类出现成员方法重名会有变化吗?
子类、父类中出现重名的成员方法,子类对象会优先调用自己的方法。
7. 方法重写
子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
7.1@Override 重写注解
-@Override: 注解,重写注解校验!
这是注解标记的方法,就说明这个方法必须是重写父类的方法,否则编译阶段报错。
建议重写都加上这个注解,一方面可以提高代码的可读性,一方面可以防止重写出错!
代码演示:
public class Student extends Human {
@Override
public void sleep(){System.out.println("我是重写方法");
}
}
正文完
2019-09-30