抽象类abstract 与 接口 interface

     在编程中,所有的对象都是用类来描述的,但并不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描绘一个类,这样的类叫做抽象类。比如一个 new Shape(),都知道是一个形状,但是具体什么形状并不知道,只是一个抽象的概念。所以他是一个抽象类,具体的描述一个形状的时候,需要描述特征,才知道具体是什么形状。

抽象类:

 抽象类是用来捕捉子类的通用信息,他不能被实例化,只能被当作子类的超类,抽象类是被用来创建继承层级里子类的模板。抽象类的方法可以有具体的实现,也可以申明自己的变量,但是变量必须是public,protected.


public abstract class Shape {
	void draw(){
		System.out.println(this + ".draw()");
	}
	abstract String tostring();
}
class Circle extends Shape{
	@Override
	String tostring() {
		// TODO Auto-generated method stub
		return null;
	}
}
class Triangle extends Shape{

	@Override
	String tostring() {
		// TODO Auto-generated method stub
		return null;
	}
}

接口:

    接口interface是抽象方法的集合,如果一个类实现了某个接口,那么他就实现了这个接口的抽象方法,接口自身知识一种形式,接口不能做任何事情,也就是说所有的方法都是抽象的,并没有具体的实现,都为public。普通类要实现接口中的方法,要用implements 去实现。

public interface  InterfaceShape {
//会报错,接口不会有具体的实现
//	void draw(){
//		System.out.println(this + ".draw()");
//	}
	void draw();
	
	void remove();
	
    String toString();
}
class Triange implements InterfaceShape{

	@Override
	public void draw() {
		// TODO Auto-generated method stub
	}
	@Override
	public void remove() {
		// TODO Auto-generated method stub
	}
}

什么时候使用抽象类和接口:

1.如果你想拥有一些方法,并且想要一些默认的实现,那么就使用抽象类,接口不提供方法的具体实现。

2.抽象类是一个类,java类不支持多继承,子类不能继承多个类,但是子类可以实现多个接口,所以想要实现多重继承,必须使用接口。

3.接口中,方法的改变或者是增删都需要改变具体的实现类,抽象方法中除了抽象类,其余的方法都可以改变。

 

工作中具体的是使用场景:

游戏中的boss:boss可以分为多种,但是其中的攻击方法,奖励方法,通知场景中的玩家方法都相同,可以做成抽象方法,但是boss 具有想通的的属性,比如boss血量,bossid等; 那么就使用抽象类;

public abstract class  AbstractBoss {
	public int bossId;
	protected long bossLf;
	
	abstract void attract();
	
	abstract void prize();
}

 

转载于:https://my.oschina.net/u/3300098/blog/847362

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值