Java接口与C++的多继承

本文探讨了C++和Java中处理接口和抽象类的区别。在C++中,通过多继承实现接口功能,而Java则使用接口来解决代码复用和跨类需求。C++的纯虚函数使得类成为抽象类,Java的接口则强制方法为抽象的。通过示例代码展示了两种语言如何实现称重功能,并讨论了接口在代码组织和设计模式中的作用。
摘要由CSDN通过智能技术生成

接口
C++:
    纯虚函数为了说明该类是抽象类
    没法让抽象类里面不产生任何纯虚函数
    但是JAVA有对应的方法(abstract)
class People{
};
class CanWeigh {    //解决称重代码复用问题在
    public:
        int weight;
        int getWeight() const {
            return weight;
        }
}
class Stu : public People,public CanWeigh {
public:
    int getWeight() const{    //重点(constd的使用)
        return 50;
    }
};
class Car:public Canweigh {
public:
    int getWeight() {
        return 1000;
    }
};
void fun(const Stu &x){    //称重函数
    cout<<"Charge:"<<x.getWeight()*10<<endl;
}
void fun(const Car &x) {
    cout<<"Charge:"<<x.getWeight()*10<<endl;
}
//以上两个fun发生了拷贝代码的现象,因为可以称重的物体太多了
//不同的对象都有称重这个问题
//这种跨类的需求在java中用接口来实现
void fun(const Canweigh &x)
{
    cout<<"Charge:"<<x.getWeight()*10<<endl;
}
//体现了C++中多继承有必要的地方
int main() {
    Stu zs;
    Car a;
    fun();
    return 0;
}
Java 接口(interface)
public interface Canweight{ //语法和类一样 加了public需要在它自己的文件中定义 bu不加只能在当前的文件中使用
    
}
interface的地位等于一个 abastract class
interface Canweight{ //语法和类一样 加了public需要在它自己的文件中定义 bu不加只能在当前的文件中使用
    int getWeight(){//提示报错说抽象方法没有body 所以默认这就是抽象方法
        return 10;
    }
}
class Car implements Canweigh{//Car实现了接口CanWeigh
}
public interface Canweigh {
    public int k;
    private double d;//报错 不可以用private修饰 
    int wei=123//相当与static final int wei = 123;
    static int getWeight() {
        return 10;
    }
}
interface可以看成可以被多继承的特殊的抽象类
使用方法:
class test {
    public static void hehe(CanWeigh w){
        cout<<"Weight:"<<w.wei<<endl;
    }
    public static void main(Strin argv[])
    {
        Stu zs = new Stu();
        Tea ls = new Tea();
        hehe(zs);
        hehe(ls);
    }
}
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值