java 虚继承_虚函数与虚继承

class A {

public:

virtual 返回值 函数名(参数表)= 0;

};

在虚函数声明方式后加一个“=0”,并且不提供实现。抽象类不允许实例化(这样做编译器会报错,因为有成员函数没有实现,编译器不知道怎么调用)。纯虚函数的实现机制和虚函数类似,只是要求派生类类必须自己实现一个(也可以不实现,但是派生类也会是个抽象类,不能实例化)。

顺带提一下,java中的每一个成员函数都可以以理解为C++中的virtual函数,不用显式声明都可以实现重载,多态。而java的接口类似于C++中的抽象类,需要实现里面的接口。

2. 虚继承

C++支持多重继承,这和现实生活很类似,任何一个物体都不可能单一的属于某一个类型。就像马,第一想到的就是它派生自动物这个基类,但是它在某系地方可不可以说也派生自交通工具这一个基类呢?所以C++的多重继承很有用,但是又引入了一个问题(专业术语叫做菱形继承?)。动物和交通工具都是从最根本的基类——“事物”继承而来,事物包含了两个最基本的属性,体积和质量。那么动物和交通工具都保存了基类成员变量——体积和质量的副本。而马有继承了这两个类,那么马就有两份体积和质量,这是不合理的,编译器无法确定使用哪一个,所以就会报错。JAVA中不存在这样的问题,因为JAVA不允许多重继承,它只可能实现多个接口,而接口里面只包含一些函数声明不包含成员变量,所以也不存在这样的问题。

这个问题用具体代码表述如下所示:

class A {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的虚函数和多态性是面向对象编程中的重要概念。在Java中,通过使用关键字“virtual”,可以将一个方法标记为虚函数虚函数是一种特殊的方法,它可以在子类中进行重写,从而实现多态性。 多态性是指在运行时根据对象的实际类型来确定方法的调用。在Java中,通过将方法声明为虚函数,可以在运行时调用子类中的重写方法。这样,即使在编译时无法确定对象的实际类型,也可以通过多态性来调用正确的方法。 在Java中,多态性的实现需要满足两个条件:继承和方法重写。当一个子类继承了一个父类,并且重写了父类的方法时,可以通过父类的引用来调用子类的方法。这种行为被称为多态性。 以下是一个简单的示例程序,演示了Java中的多态性和虚函数的使用: ```java class Animal { public void makeSound() { System.out.println("Animal is making a sound"); } } class Dog extends Animal { public void makeSound() { System.out.println("Dog is barking"); } } class Cat extends Animal { public void makeSound() { System.out.println("Cat is meowing"); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Animal(); Animal myDog = new Dog(); Animal myCat = new Cat(); myAnimal.makeSound(); myDog.makeSound(); myCat.makeSound(); } } ``` 在上面的示例程序中,Animal类是一个父类,它有一个名为makeSound的虚函数。Dog和Cat类都是Animal类的子类,并且它们都重写了makeSound方法。在程序的main函数中,创建了一个Animal对象,一个Dog对象和一个Cat对象。通过调用它们的makeSound方法,可以看到不同对象调用相同方法时,产生不同的输出,这就是Java中的多态性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值