目录
  1. 1. 抽象类
    1. 1.1. 抽象类的特点
      1. 1.1.1. 示例
    2. 1.2. 抽象类的成员特点
    3. 1.3. 抽象类的成员方法特性
      1. 1.3.1. 示例
再学一次抽象类

抽象类

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类的特点

  • 抽象类和抽象方法必须用abstract关键字修饰

  • 抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类

  • 抽象类不能实例化

    • 因为它不是具体的。
    • 抽象类有构造方法,但是不能实例化?构造方法的作用是什么呢?
    • 用于子类访问父类数据的初始化
  • 抽象的子类
    • 如果不想重写抽象方法,该子类是一个抽象类
    • 重写所有的抽象方法,这个时候子类是一个具体的类。

抽象类的实例化其实是靠具体的子类实现的。是多态的方式。

Animal a = new Cat();

示例

// 抽象类 Animal
abstract class Animal {
// 抽象方法
public abstract void eat();
}
// 子类是抽象类
abstract class Dog extends Animal {}

// 子类是具体类,重写抽象方法
class Cat extends Animal {
public void eat() {
System.out.println("猫吃鱼");
}
}

抽象类的成员特点

  • 成员变量:既可以是变量,也可以是常量。
  • 有构造方法:用于子类访问父类数据的初始化。

抽象类的成员方法特性

  • 抽象方法 强制要求子类做的事情
  • 非抽象方法 子类继承的事情,提高代码复用性。

示例

abstract class Animal {
public int num = 10;
public final int num2 = 20;

public Animal() {}

public Animal(String name,int age){}

public abstract void show();

public void method() {
System.out.println("method");
}
}

class Dog extends Animal {
public void show() {
System.out.println("show Dog");
}
}

class AbstractDemo2 {
public static void main(String[] args) {
//创建对象
Animal a = new Dog();
a.num = 100;
System.out.println(a.num); // 100
System.out.println(a.num2); // 20
System.out.println("--------------");
a.show(); // show Dog
a.method(); // method
}
}


文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-08/12/%E5%AD%A6%E4%B9%A0/%E5%90%8E%E7%AB%AF%E5%AD%A6%E4%B9%A0/JAVA/%E5%86%8D%E5%AD%A6%E4%B8%80%E6%AC%A1%E6%8A%BD%E8%B1%A1%E7%B1%BB/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论