抽象类与接口与模板方法设计模式

抽象类特点:

1,抽象方法一定在抽象中。
2,抽象方法和抽象类都必须被abstract关键字修饰。
3,抽象不可以用new创建对象,因为调用抽象方法没意义。
4,抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法,建立子类对象。
 如果子类只覆盖部分抽象方法,那么子类还是抽象的。

抽象类比一般类多了一个抽象函数。就是在类中定义抽象方法,类不能实例化。

特殊:抽象类中可以不定义抽象方法,仅仅为了不让该类建立对象。

 /**


模板方法设计模式。
定义的功能时,一部分是正确的,但一部分是不确定的,而确定的部分在使用不确定的部分。
那么就将不确定的部分暴漏出来,有该类的子类去实现。

 *案例:  获取程序运行的时间
 */
abstract class GetTime
{
 public final void getTime()  //不想被覆盖
 {
  long start=System.currentTimeMillis();
  runcode();
  long end = System.currentTimeMillis();
  System.out.println("毫秒:"+(end-start));
 }
 public abstract void runcode();  //不确定的部分暴漏出来。未必是抽象的!
}
class SubTime extends GetTime
{
 public  void runcode()
 {
  for(int x=0; x<400; x++)
  {
   System.out.print(x);
  }
 }
}

interface接口: interface{}

接口中的成员修饰符是固定的:
成员常量:public static final
成员函数:public abstract

接口中的成员都是:public
接口:是不可以创建对象的,因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全部都覆盖后,子类才可以实例化。
否则子类是一个抽象类。

接口特点:
是对外暴漏的规则。
是程序的功能扩展
接口可以用来 多继承。
类和接口的关系是实现关系。而且类可以继承一个类的同时实现多个接口。
接口与接口之间可以有继承关系。

interface Sleep
{
 void sleep(); //对外暴漏
}

interface Mans extends Sleep
{
 void smoke(); //功能扩展
}
interface Man extends Sleep,Mans{ //多继承
}
abstract class Play{
 void play(){}
}
class zhangsan extends Play implements Mans,Play{   //继承一个类实现多个接口

 @Override
 public void smoke() {
 }
 @Override
 public void sleep() {
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn_金手指

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值