前言
继承是java面向对象编程的基石,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
一、继承的具体实现形式
public class Person {
public void run() {
System.out.println("任何人都可以跑。。。");
}
public static void main(String[] args) {
}
}
class Student extends Person{
private void eat() {
System.out.println("学生正在吃。。。。");
}
public static void main(String[] args) {
Student student = new Student();
student.run();
student.eat();
}
}
结论:
由以上代码我们可以看出:关键字extends表明正在构造的新类Student派生于一个已经存在的类Person,已存在的类称为超类或者父类;子类称为子类。我们还可以看出子类可以调用父类的方法,而且子类可以拥有自己的方法,功能比超类更丰富。
注意:(子类可以调用父类的方法,但是父类不能调用子类的方法)
二、方法重载与方法重写
方法重载
首先,看一句话
明确一个前提:是在一个类中,同名的方法,包含不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。
public class Person {
public void run() {
System.out.println("任何人都可以跑。。。");
}
public void run(String name) {
System.out.println("任何人都可以跑。。。");
}
public void run(int age) {
System.out.println("任何人都可以跑。。。");
}
public static void main(String[] args) {
}
}
方法重写
首先,重写是针对不同类而言的,其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。
public class Person {
public void run() {
System.out.println("任何人都可以跑。。。");
}
public static void main(String[] args) {
}
}
class Student extends Person{
public void run() {
System.out.println("这个学生在跑。。。");
}
private void eat() {
System.out.println("学生正在吃。。。。");
}
public static void main(String[] args) {
Student student = new Student();
student.run();
student.eat();
}
}
方法覆盖:我们可以看到子类和父类当中都有run方法,而我们实际调用的却是子类自己的run方法,这就是方法的覆盖,子类通过重写和父类一样的方法实现方法的覆盖。
总结:
以上三条出自:
感觉写得不错,可以看一下。
链接: https://blog.csdn.net/wintershii/article/details/80558739
三、super关键字
super 关键字有两个用途:一是调用超类的方法,二是调用超类的构造器。调用构造器语句的时候只能作为另一个构造器的第一条语句出现。
四、继承层次
值得注意的是java只支持单继承
public class Person {
public void run() {
System.out.println("任何人都可以跑。。。");
}
public static void main(String[] args) {
}
}
class Student extends Person{
public void run() {
super.run();
System.out.println("这个学生在跑。。。");
}
private void eat() {
System.out.println("学生正在吃。。。。");
}
public static void main(String[] args) {
Student student = new Student();
student.run();
student.eat();
}
}
class XiaoMing extends Student{
}
class XiaoHong extends Student{
}
由一个公共超类派生出来的所有类的集合被称为继承层次,在继承层次当中,从某个特定的类到其祖先的路径被称为继承链,但是一定要注意java是单继承的。