java抽象方法抽象类

抽象的概念

所谓抽象就是不具体,不确定,对应到抽象方法当中就是方法没有方法体

  • 抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束。
  • 抽象类:抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可。

如何使用抽象类和抽象方法

  1. 不能直接创建 :new 抽象类对象。
  2. 必须用一个子类来继承抽象父类。
  3. 子类必须重写父类当中的所有的抽象方法。重写实现(去掉abstract关键字,然后补上方法体)
  4. 创建子类对象进行使用。

注意事项

  1. 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。

  2. 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。

  3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类

    理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计。

  4. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类

示例

此示例也是多态的示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
abstract class Pet {
public String name;
public String color;

public Pet(String name, String color) {
this.name = name;
this.color = color;
}

public abstract void eat();

public abstract void sleep();

public abstract void active();
}

class Cat extends Pet {
public Cat(String name, String color) {
super(name, color);
}

@Override
public void eat() {
System.out.println(color + " " + name + " " + "猫吃鱼");
}

@Override
public void sleep() {
System.out.println(color + " " + name + " " + "猫睡觉呼呼呼。。。");
}

@Override
public void active() {
System.out.println(color + " " + name + " " + "猫玩毛线球");
}
}

abstract class Dog extends Pet{

public Dog(String name, String color) {
super(name, color);
}

@Override
public void eat() {
System.out.println(color + " " + name + " " + "狗吃骨头");
}

@Override
public void sleep() {
System.out.println(color + " " + name + " " + "狗睡觉哈呼哈呼。。。");
}
}

class HaShiQi extends Dog{
public HaShiQi(String name, String color) {
super(name, color);
}

@Override
public void active() {
System.out.println(color + " " + name + " " + "哈士奇拆家");
}
}

class DaHuang extends Dog{
public DaHuang(String name, String color) {
super(name, color);
}

@Override
public void active() {
System.out.println(color + " " + name + " " + "大黄 忠心看家");
}
}
public class Test1 {
public static void main(String[] args) {
Pet pet = new HaShiQi("二哈哈","黑色");
pet.eat();
pet.sleep();
pet.active();
Pet pet2 = new DaHuang("花儿","黄色");
pet2.eat();
pet2.sleep();
pet2.active();
Pet pet3 = new Cat("删除","绿色");
pet3.eat();
pet3.sleep();
pet3.active();
}
}


java抽象方法抽象类
https://blog.wangxk.cc/2020/08/20/java抽象方法抽象类/
作者
Mike
发布于
2020年8月20日
许可协议