Java教程

[JavaⅠ]4.1继承与多态——继承、super、抽象类

本文主要是介绍[JavaⅠ]4.1继承与多态——继承、super、抽象类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

继承与抽象类

  • 定义

    ​ 就是子类继承父类的属性行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。

  • 好处

    1. 提高代码的复用性
    2. 类与类之间产生了关系,是多态的前提

1 继承的格式

  • extends 关键字,可以声明一个子类继承另外一个父类

    class 父类 {
        ...
    }
    
    class 子类 extends 父类 {
        ... 
    }
    

2 重名的成员变量

​ 成员变量不重名无影响,子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰 父类成员变量,类似于之前学过的 this 。

使用格式:

super.父类成员变量名

代码

class Fu {
    // Fu中的成员变量。 
    int num = 6; 
}
class Zi extends Fu {
    // Zi中的成员变量 
    int num = 9; 
    public void show(){
        //访问子类的sum
        System.out.println(sum);
        //访问子类的sum
        System.out.println(this.sum);
        //访问父类的sum
        System.out.println(super.sum);
    } 
}
class ExtendsDemo03 {
    public static void main(String[] args) {
        // 创建子类对象 
        Zi z = new Zi();
        // 调用子类中的show方法
        z.show(); 
    } 
}
//运行结果为 996

3 重名的成员方法(重写)

​ 成员方法不重名无影响,如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。

  • 方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效

果,也称为重写或者复写。声明不变,重新实现

  • 子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从

而进行扩展增强。

public class Fu {
    //Fu类的成员方法
    public void show(){
        System.out.println("fu");
    }
}
public class Zi extends Fu{
    //Zi类的成员方法
    public void show(){
        //沿袭父类方法
        super.show();
        //重新实现
        System.out.println("zi");
    }
}
public class Demo02 {
    public static void main(String[] args) {
        // 创建子类对象
        Zi zi = new Zi();
        // 调用子类中的show方法
        zi.show();
    }
}

4 Java继承的特点

  1. Java只支持单继承,不支持多继承
  2. Java支持多层继承(继承体系)
  3. 子类和父类是一种相对的概念。

5 抽象类

​ 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了。

​ 我们把没有方法主体的方法称为抽象方法,包含抽象方法 的类就是抽象类

  • 抽象方法

    ​ 使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。

    定义格式:

    修饰符 abstract 返回值类型 方法名 (参数列表);
    
  • 抽象类

    ​ 如果一个类包含抽象方法,那么该类必须是抽象类

    定义格式:

    abstract class 类名字 {
    }
    

    ​ 继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该父 类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象,失去意义。

    代码

    public abstract class Fu {
        public abstract void show();
    }
    public class Zi extends Fu{
    
        @Override
        public void show() {
            System.out.println("zi");
        }
    }
    public class Demo03 {
        public static void main(String[] args) {
            Zi zi = new Zi();
            zi.show();
        }
    }
    

    参考资料:

    ​ 《Java教程零基础入门到精通IDEA版》黑马程序员

这篇关于[JavaⅠ]4.1继承与多态——继承、super、抽象类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!