1. 類和方法都要被關鍵字abstract去修飾
2. 抽象的方法不用去實現而只要聲明一下就可以了
3. 抽象類不可以去實例化,也就是不能去new
4. 一個類中如果含有抽象方法,那麼這個類就必須被聲明爲抽象類,繼承它的子類必須去覆寫這個抽象方法纔可以被實例化
package unicorn.demo;
abstract class Person{
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person(String name,int age){
this.setName(name);
this.setAge(age);
}
public abstract String getSay();
public void say(){
System.out.println(this.getSay());
}
}
class Worker extends Person{
private float money;
public float getMoney() {
return money;
}
public void setMoney(float money) {
this.money = money;
}
public Worker(String name,int age,float money){
super(name,age);
this.setMoney(money);
}
public String getSay(){
return "I am a worker,My name is:"+super.getName()+",Age:"+super.getAge()+",Money:"+this.getMoney();
}
}
class Student extends Person{
private float score;
public float getScore() {
return score;
}
public void setScore(float score) {
this.score = score;
}
public Student(String name,int age,float score){
super(name,age);
this.setScore(score);
}
public String getSay(){
return "I am a student,My name is:"+super.getName()+",age:"+super.getAge()+",score:"+this.getScore();
}
}
public class Demo {
public static void main(String[] args) {
Person p1=new Worker("unicorn",25,6000);
Person p2=new Student("liangxi",13,90);
p1.say();
p2.say();
}
}
二.接口
href="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_filelist.xml" rel="File-List" />大家知道,在java中只允許單繼承,但是在實際問題中往往都需要多繼承,java引入了接口這一概念。(一個類可以實現多個接口)
由於接口中都是抽象方法,那麼我們在實現它的時候就必須全部覆寫這些方法。假如我有一個類,這個類只想覆寫一部份方法怎麼辦?
在接口與這個類中間可以加一個抽象類:
抽象類去覆寫接口中的全部方法,而那個類去繼承這個抽象類,根據需要覆寫抽象類中的方法。(簡單的適配器模式)
package unicorn.demo;
interface Eat{
public void eatBread();
public void eatApple();
public void eatBanana();
}
abstract class PersonEat implements Eat{
public void eatBread(){
}
public void eatApple(){}
public void eatBanana(){}
}
class Person extends PersonEat{
public void eatBread(){
System.out.println("eatBread");
}
public void eatApple(){
System.out.println("eatApple");
}
}
public class Demo02 {
public static void main(String[] args) {
Person p=new Person();
p.eatBread();
p.eatApple();
}
}