学习笔记十一:面向对象编程(六)

玉不琢,不成器;人不学,不知道。 ——礼记·学记 


本讲内容:接口、final类


一、接口

 Java中只支持单继承,即一个类只能有一个父类。为了提供类似多重继承的功能,Java提供了接口(Interface)机制。但接口不仅仅是为了解决多重继承问题才出现的。接口拥有多重继承的好处,而且没有多重继承的缺点---多重继承的缺点全部来源于实现全部继承,关键在于接口只有abstract(默认、不用写)方法和常量。

譬如下面例子:有些动物和不能和人亲近玩耍的,不能继承。

<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">class Animal{
	public void eat() {
		System.out.println("吃");
	}
	public void sleep() {
		System.out.println("睡");
	}
}
interface Pet{
	void play();
}
class Tiget extends Animal{}
class Cat extends Animal implements Pet{
	public void play() {
		System.out.println("猫是可以亲近玩耍的");
	}
}
public class danmei {
	public static void main(String[] args) {
		Cat a=new Cat();
		a.eat();
		a.sleep();
		a.play();
	}
}</span></span></span>

运行的结果是:

<span style="font-size:18px;"><span style="font-size:18px;">吃
睡
猫是可以亲近玩耍的</span></span>


注意:
1、接口名用 interface 修饰, 相对应的 类名用 class修饰
2、接口里定义的方法都是抽象方法,可以用abstract修饰,当然也可以不用它修饰
3、接口只能被实现 ( implements )
4、可以用抽象类实现接口,也就是说虽然实现了,但是没有真正写接口的任何方法,它把责任推给了抽象类的子类
5、普通类实现接口,则必须按照接口的契约,实现接口所定义的所有方法。
6、接口可以继承接口。

7、一个接口可以继承多个父类,也就是说一个接口之间可以多重继承。

8、接口不能直接实例化,只能new 一个它的实现类

9、接口是更加抽象的抽象类,抽象类的方法可以有方法体,而接口不可以。

10、接口可以有变量(是常量但不可以用private、protected修饰,默认是static)


接口与多态的应用例子

//汽车接口
interface Car{
	//获得汽车名称
	String getName();
	//获得汽车售价
	int getPrice();
}

class BMW implements Car{
	public String getName() {
		return "BMW";
	}

	public int getPrice() {
		return 1000000;
	}
}

class BYD implements Car{
	public String getName() {
		return "BYD";
	}

	public int getPrice() {
		return 100000;
	}
}

//汽车出售店
public class CarShop {
	//售车收入
	private int money=0;
	//卖出一部车
	private void sellCar(Car car) {
		System.out.println("车型:"+car.getName()+"单价"+car.getPrice());
		money+=car.getPrice();
	}
	
	//售车总收入
	public int getMoney(){
		return money;
	}
	public static void main(String[] args) {
		CarShop a=new CarShop();
		//卖出一辆宝马
		a.sellCar(new BMW());
		a.sellCar(new BYD());
		System.out.println("总收入:"+a.getMoney());
	}
}
打印:

车型:BMW单价1000000
车型:BYD单价100000
总收入:1100000


二、final(最终)类

类有3个修饰符:public 、abstract、final。一个final类,表示此类不能派生子类。String类就是典型  

1、final可以修饰类、方法、变量

2、被final修饰后的类不可以被其它类继承

3、被final修饰后的方法不可以被重写

4、被final修饰后的变量不可以改变(即为常量),一般用xx_xx_xx来命名

5、被final修饰的变量,必须赋值,并且以后不再赋值


本讲就到这里,Take some time and enjoy it

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值