对于抽象类和接口的使用也是非常常见的,然后他们存在意义是什么呢?
抽象类与接口的意义在于让 设计与实现相分离。
在抽象类中定义了一些标准,或者是实现了部分的方法,继承与该抽象类的子类可以遵循这些标准来实现自己的需求,或者是重写抽象类中已经实现的方法。
抽象类 不能被直接实例化,必须通过继承来实现。
接口 只能定义标准(一些方法),而不能包含具体实现的方法。
如果要使用接口,必须把在接口中定义的标准(一些方法),具体实现(也就是将接口中定义的方法全部实现)。
抽象类和接口,功能很相似,类只能继承与一个父类,却能一起使用多个接口,两者也能一起使用。
总结为:单继承,多接口;先继承, 后接口。
下面看如何定义抽象类 和 接口, 并且怎样一起使用。
定义抽象类的方法:
// 定义一个关于形状的抽象类
abstract class Shape()
{
function setCenter($x, $y) // 定义了一个具体实现的方法
{
$this->x = $x;
$this->y = $y;
}
abstract function draw(); // 定义了一个抽象的方法,也就是一个标准,需要子类具体实现的
protected $x, $y; // 定义了两个属性
}
// 定义一个方形的子类
class Square extends Shape
{
function draw()
{
// 这里根据方形的特征来实现该方法
}
}
// 定义一个园的子类
class Circle extends Shape
{
function draw()
{
// 这里根据园的特征来实现该方法
}
}
定义接口的方法:
interface Chargeable
{
public function getPrice();
}
class shopProduct implements Chargeable
{
public function getPrice()
{
// 具体实现接口中定义的 getPrice 方法的功能
}
}
一起使用抽象类和接口:
class AClass extends BClass implements AInterface,BInterface
{
//...
}
上面只是简单的介绍了抽象类和接口的一些概念,还需要在不断的实践中来加深对这些概念的理解。
分享到:
相关推荐
使用接口来定义行为能有效地分离行为与实现,使代码容易维护。接口是定义混合类型的理想选择,任何一个实现某个接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现多个接口,从而这个类就有了多种类。...
抽象类的作用是从类的角度分离接口和实现,基类定义公共接口,子类实现该接口。 通用超类(Universal Superclass) ------------------------- 通用超类是指java.lang.Object类,它是所有定义的类的超类。Object类...
该模式通常会定义一个工厂接口或抽象类,由具体的工厂类实现该接口或抽象类来创建相应的产品。工厂模式的常见实现方式包括简单工厂、工厂方法、抽象工厂等。 抽象工厂模式是一种创建型设计模式,它的主要目标是提供...
实际上接口和抽象类的选择不是随心所欲的。 要理解接口和抽象类的选择原则,有两个概念很重要:对象的行为和对象的实现。如果一个实体可以有多种实现方式,则在设计实体行为的描述方式时,应当达到这样一个目标:在...
它将客户和类的实现分离,客户通过他们的抽象接口操纵实例,产品的类名也在具体工厂的实现中被分离,它们不出现在客户代码中。 l 它使得易于交换产品系列。一个具体工厂类在一个应用中仅出现一次——即在它初始化的...
这样将功能的定义与实现分离,优化了程序设计。 多态是继封装、继承之后,面向对象的第三大特性。 Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是...
设计模式(java版) 模式是在某情景(context)下,针对某问题的某种解决方案 **总览图** ![设计模式预览]() *创建型* Singleton(单例模式):...Bridge(桥接模式):将抽象部分与它的实现部分分离,使它们都可以独立地变
桥接模式主要由四个角色组成:抽象类、扩充抽象类、实现类接口和具体实现类。 在JavaScript中,我们可以将桥接模式简化成两个角色:扩充抽象类和具体实现类。 那么,如何理解桥接模式呢?我们可以通过一个简单的...
它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用 和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的 Java 语言基础上跃进一步,更重要的是,GoF 的设计模式反复 向你强调一个宗旨:要让...
使用抽象工厂模式的主要目的是将对象的创建与使用相分离,从而提供了一种灵活的方式来创建对象家族,而不必指定具体的类。这可以使系统更具可扩展性和可维护性,因为可以轻松地添加新的具体工厂和产品类。 抽象工厂...
•接口体现了规范与实现分离的设计。 接口的定义 •和类定义不同,定义接口不再用class关键字,而是使用interface关键字。语法如下: •[修饰符] interface接口名 extends 父接口1,父接口2 ... •{ ...
亚历山大看到了这一点,他知道结构不能与要解决的问题分离,因此,在寻找和描述设计质量一致性的探求中,亚历山大认识到,必须观察为了解决同样问题而设计的不同结构。 亚历山大发现,通过这样的方式——观察解决...
工厂方法模式提供了一种解决方案,即定义一个用于创建对象的接口,让子类决定实例化哪个类。这样可以在不修改已有的代码的情况下,增加新的功能。工厂方法模式的定义是:定义一个用于创建对象的接口,让子类决定实例...
抽象化(Abstraction)角色:定义抽象类的接口并保存一个对实现化对象的引用。 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。 实现化(Implementor)角色:定义实现类的接口,...
4、 IDAL要达到的目的是:实现业务逻辑(BLL)与数据库访问(DAL)的完全分离!!! 5、 IDAL各个类(IDAL文件夹中的各个文件)划分或者说编制的原则,更趋向于“将对数据库的不同操作进行归类”,考虑的主要方面是...
这样将功能的定义与实现分离,优化了程序设计。耦合性也因此降低。 在定义接口时,需要使用 public interface 关键字,例如 public interface Printable { }。接口中的方法都没有实现,只是定义了方法的名称、参数...
2. 桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。 3. 组合模式(Composite):将对象组合成树形结构以表示"部分-整体"的层次结构。 4. 装饰模式(Decorator):动态地给一个对象添加...
第15章 面向对象程序设计面向对象程序设计(object-oriented programming)的核心思想:数据抽象:可以将类的接口与实现分离继承:可以定义
工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 适用条件: 1. 当一个类不知道它所必须创建的对象的类的时候。 2. 当一个类希望由它的子类来...
类结构分离了接口与实现,从而实现信息隐蔽。 4. 弱偶合:弱偶合是一个软件结构内不同模块之间互连的紧密程度。对象是最基本的模块,偶合主要是指不同对象之间的相互关联的紧密程度。 5. 强内聚:内聚是一个模块内...