抽象類與適配器

一.抽象類    href="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_filelist.xml" rel="File-List" />

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();

	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章