基类和接口

接口在java编程中有极大的作用,对团队来说,更是不可或缺的部分。
接口中的方法往往是“哑”方法,即,在接口中,只有方法的声明,没有方法的具体实现。

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。
复用代码的其中一种形式是 客户端程序员遵循该接口来编写他们自己的类。
关键字的使用以及语法:


Java中的多重继承

interface CanFight{
void fight();
}
interface CanSwim{
void swim();
}
interface CanFly{
void fly();
}
class ActionCharacter{
public void fight{}
}
class Hero extends ActionCharacter implements CanFight,CanSwim,CanFly{
public void swim(){}
public void fly(){}
}


CanFight 接口与ActionCharacter类中的fight()方法的特征签名是一样的,而且,在Hero中并没有提供fight()的定义。可以扩展接口,但是得到的只是另一个接口。当想创建对象时,所有的定义首先必须都存在。及时Hero没有显式的提供fight()的定义,其定义也因ActionCharacter而随之而来,这样就使得创建Hero对象成为了可能。
(例子摘自 P179)


“确定接口是理想选择,因而应该总是选择接口而不是具体的类”。
对于创建类,几乎在任何时刻,都可以替代为创建一个接口和一个工厂(工厂在p187)。
任何抽象性都应该是应真正的需求而产生的。当需要时,你应该重构接口而不是导出添加额外级别的间接性,并由此带来的额外的复杂性。
最恰当的原则是选择类而不是选择接口。从类开始,如果接口的必须行变得非常明确,那么就进行重构。接口是一种重要的工具,但是最好不要滥用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基类和抽象类是C++中的两个重要概念,它们有一些区别和联系。 虚基类是被"virtual"继承的类,任何类都可以成为虚基类。虚基类的主要作用是解决多重继承中的菱形继承问题,即当一个派生类同时继承了两个基类,而这两个基类又共同继承自同一个虚基类时,通过虚基类可以避免派生类中出现两份虚基类的实例。虚基类没有纯虚函数的要求。 抽象类是至少包含一个纯虚函数的类,它不能被实例化,即不能创建抽象类的对象。抽象类的主要作用是作为基类,为派生类提供接口和规范。派生类必须实现抽象类中的纯虚函数才能被实例化。抽象类可以包含非纯虚函数和数据成员。 以下是一个示例代码,展示了虚基类和抽象类的使用: ```cpp // 虚基类 class Base { public: int x; }; // 派生类1 class Derived1 : virtual public Base { public: int y; }; // 派生类2 class Derived2 : virtual public Base { public: int z; }; // 最终派生类 class FinalDerived : public Derived1, public Derived2 { public: int sum() { return x + y + z; } }; // 抽象类 class AbstractClass { public: virtual void pureVirtualFunction() = 0; void nonVirtualFunction() { // 非纯虚函数的实现 } }; int main() { FinalDerived obj; obj.x = 1; obj.y = 2; obj.z = 3; int result = obj.sum(); // 输出:6 AbstractClass* ptr; // ptr = new AbstractClass(); // 错误,抽象类不能被实例化 // 抽象类可以作为指针类型使用 ptr->pureVirtualFunction(); // 调用派生类中的实现 return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值