简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者
新书发布:《Android系统多媒体进阶实战》🚀
优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀
优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
🍉🍉🍉文章目录🍉🍉🍉
- 🌻1.前言
- 🌻2.Java继承抽象类介绍
- 🌻3.代码实例
- 🐓3.1 子类指向子类实例化
- 🐓3.2 抽象类父类指向子类实例化
🌻1.前言
本篇目的:Java之继承抽象类用法实例
🌻2.Java继承抽象类介绍
Java继承是一种面向对象编程的特性,它允许子类继承父类的属性和方法。在Java中,抽象类(Abstract Class)是一种不能被实例化的类,它可以包含抽象方法(没有具体实现的方法)和具体实现的方法。下面我将详细介绍Java继承抽象类的基本概念和使用方法。
- 抽象类的定义
抽象类使用关键字abstract修饰,如下所示:
public abstract class Animal {
// 抽象方法
public abstract void sound();
// 具体实现的方法
public void sleep() {
System.out.println("动物在睡觉");
}
}
- 继承抽象类
子类通过extends关键字继承抽象类,并必须实现抽象类中的所有抽象方法。否则,子类也必须被声明为抽象类。
public class Dog extends Animal {
// 实现抽象方法
@Override
public void sound() {
System.out.println("汪汪汪");
}
}
- 抽象类的特点
(1)抽象类不能被实例化,只能通过子类来实现具体的对象。
(2)抽象类可以包含属性、方法、构造器,但构造器不能直接被调用,需要在子类中通过super关键字调用。
(3)抽象类可以包含抽象方法和具体实现的方法,具体实现的方法可以被子类继承和使用。
(4)抽象类可以继承另一个类(抽象类或具体类)并添加新的抽象方法或实现。 - 抽象类的优势
(1)抽象类为子类提供了一个公共的、规范的定义,使得子类可以共享方法实现。
(2)抽象类可以包含抽象方法,使得子类必须实现这些方法,从而保证子类具有某些共性。
(3)通过抽象类,可以更好地实现多态性。 - 使用场景
抽象类常用于以下场景:
(1)当多个类具有相同的方法和属性,但具体实现不同,可以使用抽象类来定义这些共同点。
(2)当需要定义一个公共的接口,但不希望这个接口被直接实例化时,可以使用抽象类。
- Java继承抽象类是一种强大的面向对象编程特性,它可以帮助我们更好地组织和复用代码,实现多态性。通过抽象类,我们可以定义具有共性的方法,并在子类中实现具体的业务逻辑。在实际开发过程中,合理使用抽象类可以提高代码的可读性、可维护性和扩展性。
🌻3.代码实例
🐓3.1 子类指向子类实例化
- Animal.java
public abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
System.out.println("name = " + name);
}
public void test(){
System.out.println("test() is called\n");
}
}
- Dog.java
public class Dog extends Animal {
public Dog(String name,int count) {
super(name); // 调用父类构造方法,初始化name
}
public static void main(String[] args) {
//v1.0
Dog dog = new Dog("HuaWei", 5678);
dog.test();
}
}
- 打印:
name = HuaWei
test() is called
🐓3.2 抽象类父类指向子类实例化
- Animal.java
public abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
System.out.println("name = " + name);
}
public void test(){
System.out.println("test() is called\n");
}
}
- Dog.java
public class Dog extends Animal {
public Dog(String name,int count) {
super(name); // 调用父类构造方法,初始化name
}
// main 函数,测试代码
public static void main(String[] args) {
//v2.0
Animal aml = new Dog("XiaoMi", 1234);
aml.test();
}
}
- 打印:
name = XiaoMi
test() is called