二、抽象類
2.1抽象類的概述(理解)
當我們在做子類共性功能抽取時,有些方法在父類中并沒有具體的體現,這個時候就需要抽象類了! 在Java中,一個沒有方法體的方法應該定義為抽象方法,而類中如果有抽象方法,該類必須定義為抽象類!
2.2抽象類的特點(記憶)
- 抽象類和抽象方法必須使用 abstract 關鍵字修飾
//抽象類的定義
public abstract class 類名 {}
//抽象方法的定義
public abstract void eat()?
-
抽象類中不一定有抽象方法,有抽象方法的類一定是抽象類
-
抽象類不能實體化
? 抽象類如何實體化呢?參照多型的方式,通過子類物件實體化,這叫抽象類多型
- 抽象類的子類
? 要么重寫抽象類中的所有抽象方法
? 要么是抽象類
2.3抽象類的成員特點(記憶)
成員的特點
- 成員變數
? 既可以是變數
? 也可以是常量
- 構造方法
? 空參構造
? 有參構造
- 成員方法
? 抽象方法
? 普通方法
- 代碼演示
動物類
public abstract class Animal {
private int age = 20?
private final String city = "北京"?
public Animal() {}
public Animal(int age) {
this.age = age?
}
public void show() {
age = 40?
System.out.println(age)?
// city = "上海"?
System.out.println(city)?
}
public abstract void eat()?
}
貓類
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("貓吃魚")?
}
}
測驗類
public class AnimalDemo {
public static void main(String[] args) {
Animal a = new Cat()?
a.eat()?
a.show()?
}
}
2.4抽象類的案例(應用)
- 案例需求
請采用抽象類的思想實作貓和狗的案例,并在測驗類中進行測驗
- 代碼實作
動物類
public abstract class Animal {
private String name?
private int age?
public Animal() {
}
public Animal(String name, int age) {
this.name = name?
this.age = age?
}
public String getName() {
return name?
}
public void setName(String name) {
this.name = name?
}
public int getAge() {
return age?
}
public void setAge(int age) {
this.age = age?
}
public abstract void eat()?
}
貓類
public class Cat extends Animal {
public Cat() {
}
public Cat(String name, int age) {
super(name, age)?
}
@Override
public void eat() {
System.out.println("貓吃魚")?
}
}
狗類
public class Dog extends Animal {
public Dog() {
}
public Dog(String name, int age) {
super(name, age)?
}
@Override
public void eat() {
System.out.println("狗吃骨頭")?
}
}
測驗類
public class AnimalDemo {
public static void main(String[] args) {
//創建物件,按照多型的方式
Animal a = new Cat()?
a.setName("加菲")?
a.setAge(5)?
System.out.println(a.getName()+","+a.getAge())?
a.eat()?
System.out.println("--------")?
a = new Cat("加菲",5)?
System.out.println(a.getName()+","+a.getAge())?
a.eat()?
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/254528.html
標籤:java
