2019.3.13 抽象类与抽象方法
抽象类
-
编写抽象类的方法:在 public 后加 abstract
-
抽象类的特点:
-
不能使用抽象类创建 "对象",只能使用抽象类创建 "子类"
-
样例:联动上一篇父类Animal,这样创建对象就是错误的
-
抽象类的标志
-
-
编写抽象类Animal
public abstract class Animal {
private String name;
private String kind;
private int age;
public void bite(){
System.out.println("咬咬咬");
}
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
", kind='" + kind + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
抽象方法
-
编写抽象方法的方法:在"public"后面添加"abstract"
-
抽象方法的特征及注意事项
- 抽象方法后不能有大括号,直接小括号加分号结尾(即没有方法体)
- 抽象方法在子类中一定要被重写
- 子类必须实现父类的抽象方法
- 非抽象类不能写抽象方法
- 抽象方法只是为了"给子类规定方法的格式"
-
编写抽象类Animal中的抽象方法bark
public abstract class Animal {
private String name;
private String kind;
private int age;
public void bite(){
System.out.println("咬咬咬");
}
public abstract void bark();//这个就是抽象方法
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
", kind='" + kind + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 抽象方法在子类中必须要被重写样例
public class Dog extends Animal{
@Override
public void bark() {
System.out.println("汪汪汪");
}
}
- 当父类中有抽象方法且子类中没有重写时
错误样例: