1. 程式人生 > >談談多繼承【C++ & java】

談談多繼承【C++ & java】

多繼承,即一個類繼承了多個基類。

C++:

class A{
public :
void sayHi();
};
class B{
public :
void sayHi();
};

class C : public A, public B{
};

在C++中,支援多繼承。上面中,class C 繼承了A 也繼承了B。

繼承帶來的問題:

顯然,繼承帶了的一個最明顯的問題就是重名。class C繼承了class A的方法sayHi(), 也繼承了class B的方法sayHi().

在JAVA中,只支援單繼承。

但是可以通過多實現來間接實現多繼承機智。

public interface A{
public void sayHi(){};
}
public interface B{
public void sayHi(){};
}

public class C implements A, B{
public void sayHi(){
  // write sayHi function here 
}
}

因為JAVA中的implements機制一定會重新編寫函式,所以不會出現多繼承帶來的重名問題。

相關推薦

談談繼承C++ & java

多繼承,即一個類繼承了多個基類。 C++: class A{ public : void sayHi(); }; class B{ public : void sayHi(); }; class C : public A, public B{ }; 在C++中,支援多繼

C++ / Javachar陣列和string的相互轉換及自動轉換

一般的轉換: #include<cstdio> #include<cstring> #include<string> using namespace std; char str[100]; string s; int main()

C#學習繼承

建構函式和解構函式的呼叫順序 建構函式和解構函式的呼叫順序相反,建構函式從基類到派生類依次呼叫,解構函式反過來。 抽象類和抽象方法 抽象方法必須包含在抽象類中,也就是說,一旦一個類包含抽象方法,就應該被宣告為抽象類。 抽象類用 abstract 修飾,無法用new 來例項化。但可以用抽象類的引用

C語言學習筆記7——指針與維數組

一個 聲明 %d mage 分享圖片 技術分享 pan 最好 include 1. 聲明一個指向多維數組的指針 int (* pz) [2]; //pz指向一個內涵兩個int類型元素的數組 int * pax[2]; //pax 是一個內含兩個指針元素的

劍指offer - C++/Java5、用兩個棧實現佇列

牛客網題目連結:用兩個棧實現佇列 題目描述: 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 1、題目分析 首先我們知道資料結構中棧與佇列的特性是: 棧:資料先進後出 佇列:資料先進先出 假設現在佇列的兩個

C#基礎關於類(繼承

1、繼承:面向物件程式設計中提供的子類可以沿用父類某些行為和特徵的一種方式。       當一個類繼承另一個類時,被繼承的類稱為父類或基類;該類被稱為子類或派生類。       【特點】:        ⑴、傳遞性;(即類B繼承類A,類C繼承類B,故類C同時擁有類A和類

C語言檔案程式設計

1、多檔案程式設計,一個檔案可以有多個函式,但是一個函式最多一個檔案 2、多檔案程式設計的步驟: • 把所有函式分散在多個檔案中,通常主函式在單獨的檔案裡 • 為每個原始檔編寫一個配對的以.h作為副檔名的標頭檔案,主函式所在的不需要,不分配記

C#基礎

實現多型的三種方式:虛方法、抽象類、介面 一、虛方法 如果父類中的方法有預設的實現,並且父類需要被例項化,這時可以考慮將父類定義成一個普通類,用虛方法來實現多型。 步驟:1、將父類的方法標記為虛方法 ,使用關鍵字 virtual 2、子類重寫父類的虛方法,使用關鍵字override

C語言寫氣泡排序可以排序個字串

這道題是氣泡排序的簡單延伸,程式碼如下:  #define _CRT_SECURE_NO_WARNINGS 1 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #inc

C語言輸入任意個整數的小技巧

有時候可能需要輸入的整數不定,輸入一行,回車作為結束符,中間用任意多個空格隔開。 程式碼如下: #include<stdio.h> int main() { int a[70],i=0,j; int sum=0; char y; printf("請輸入任

C語言簡單思路找一個數組中重複次數最的數

#include <stdio.h> int main() {     int a[1024];     int b[1024] = {0};                           //初始化每個數出現一次          int i = 0;

C++學習如何在Clion中生成個可執行檔案

在構建一個新的Clion工程的時候,會自動生成一個資料夾cmake-build-debug,可以幫助我們快速的對整個C++工程進行編譯執行。而主函式編譯後生成的可執行檔案就位於cmake-build-d

C語言輸入任意個整數

有時候可能需要在每一行輸入的整數不確定,回車作為結束符,整數中間用任意多個空格隔開。程式碼如下:#include<cstdio> int main() { int num[1000]; char ch; do { scanf("%d",&am

C++拾遺 從記憶體佈局看C++虛繼承的實現原理

開發十年,就只剩下這套架構體系了! >>>   

C語言統計數字在排序數組中出現的次數

語言 個數 統計 ret r+ () class tdi times //數字在排序數組中出現的次數。 //統計一個數字在排序數組中出現的次數。比如:排序數組{1,2,3,3,3,3,4,5}和數字3,因為3出現了4次,因此輸出4. #include <stdio

C++ STLDeques

容器 ever pty ngs 速度 pos algo dom 器) 1、結構   容器deque和vector非常相似,也是采用動態數組來管理元素,提供隨機存取,有著和vector幾乎一樣的接口,不同的是deque的動態數組頭尾都開放,因此可以在頭尾都可以進行快速的安插和

C++ STL容器的選擇

但是 函數 pair list 成員 cto 允許 數據 結構 c++提供了各具特長的容器,那麽我們該如何選擇最佳的容器? 缺省狀態下應該選擇vector,因為vector內部結構最簡單,並允許隨機存取,所以數據的存取十分方便,數據的處理也快。 如果經常要在頭部和尾部安插

C++ STLQueue

stack push com col 第一個 順序 size deque lis 1、定義   class queue<>實作為一個queue(也成為FIFO,先進先出)。可以使用push()將任意數量的元素置入queue中,也可以使用pop()將元素以其插入順

C語言推斷一個數是否為2的n次方

post data- popu scanf scan ng- 輸入 ont print //推斷一個數是否為2的n次方 #include <stdio.h> int is_two_n(int num) { if ((num&(num - 1))

c#基礎int 轉換 string,string 轉換 int

方法 res data int 是否 tryparse php convert out 1、int 轉換 string方法:toString() 或者 Convert.toString()舉例: [code]phpcode://toString() int a =1; st