抽象类与适配器

一.抽象类    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();

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值