1. 程式人生 > >c++抽象類概念

c++抽象類概念

#include "Englishman.h"
#include "Chinese.h"


int main(int argc, char **argv)
{
Englishman e;
Chinese c;


e.setName("Bill");
c.setName("zhangsan");


e.eating();
c.eating();

return 0;
}


#ifndef _CHINESE_H
#define _CHINESE_H


#include <iostream>
#include <string.h>
#include <unistd.h>


#include "Human.h"


using namespace std;


class Chinese : public Human{
public:
void eating(void);
void wearing(void);
void driving(void);
~Chinese();
};


#endif


#include "Englishman.h"




void Englishman::eating(void) 

cout<<"use knife to eat"<<endl; 
}


void Englishman::wearing(void) 
{
cout<<"wear english style"<<endl; 
}


void Englishman::driving(void) 
{
cout<<"drive english car"<<endl; 
}


Englishman::~Englishman() 

cout<<"~Englishman()"<<endl; 
}


#ifndef _HUMAN_H
#define _HUMAN_H


#include <iostream>
#include <string.h>
#include <unistd.h>


using namespace std;


class Human {
private:
char *name;


public:
void setName(char *name);
char *getName(void);

};


#endif


#include "Chinese.h"




void Chinese::eating(void) 

cout<<"use chopsticks to eat"<<endl; 
}


void Chinese::wearing(void) 
{
cout<<"wear chinese style"<<endl; 
}


void Chinese::driving(void) 
{
cout<<"drive chinese car"<<endl; 
}


Chinese::~Chinese() 

cout<<"~Chinese()"<<endl; 
}


#include "Human.h"


void Human::setName(char *name) 
{
this->name = name;
}


char *Human::getName(void) 
{
return this->name;
}
#ifndef _ENGLISHMAN_H
#define _ENGLISHMAN_H


#include <iostream>
#include <string.h>
#include <unistd.h>


#include "Human.h"


using namespace std;


class Englishman : public Human {
public:
void eating(void);
void wearing(void);
void driving(void);
~Englishman();
};


#endif




Human: main.o Chinese.o Englishman.o Human.o
g++ -o
[email protected]
$^


%.o : %.cpp
g++ -c -o [email protected] $<


clean:
rm -f *.o Human

相關推薦

c++抽象概念

#include "Englishman.h" #include "Chinese.h" int main(int argc, char **argv) {Englishman e;Chinese c;e.setName("Bill");c.setName("zhangsa

C# 抽象抽象方法

tail 出現 keyword bstr pos term string enter net 首先,在學習抽象方法的時候,我們必須清楚在C#中為什麽會存在抽象方法,或者說為什麽需要抽象方法。 我們知道,接口可以包含方法的申明和屬性,但是方法中不包含代碼,實現這個接口的方

C++語言學習(十五)——C++抽象與接口

eight close send 都是 () 實例 amp 定義類 esp C++語言學習(十五)——C++抽象類與接口 一、抽象類與接口 1、抽象類簡介 面向對象的抽象類用於表示現實世界的抽象概念,是一種只能定義類型,不能產生對象的類(不能實例化),只能被繼承並被重寫相關

24.C++- 抽象(存虛函數)、接口、多重繼承

通過 https virtual eache 類的成員 似的 什麽 lan 們的 什麽是抽象類 用來表示現實世界中的抽象概念 是一種只能定義類型,而不能產生對象的類 只能被子類繼承,且抽象類的相關成員函數沒有完整的體現,用來被子類重寫. 比如圖形(Shape)類, 就是

c# 抽象抽象方法使用(abstract)

  入行一年多,在這個IT行業,開發技術主要使用的是.NET,而對應使用的高階語言自然就是c#了。從2017年7月入職後,在平時的工作過程中,只記得使用一些方法去完成邏輯功能,而很少去深究一些語法特性,特別是沒有去關注為什麼會去使用這些語法。現在,入職一家新公司,那就從現在開始,一有空就做一些學習記錄,同時這

C#抽象/虛方法

多型:讓一個物件能夠表現出多種狀態(型別) 實現多型的三種手段:1.虛方法 2.抽象類 3.介面 抽象類定義:當父類中的方法不知道如何去實現的時候,可以考慮將父類寫成抽象類,將方法寫成抽象方法. 關鍵字:abstract public abstract class

C#抽象抽象方法

解釋:如果一個類不與具體的事物相聯絡,而只是表達一種抽象的概念,僅僅是作為其派生類的一個基類,這樣的類就是抽象類,在抽象類中宣告方法時,如果加上abstract時就是抽象方法。用法:如果一個類設計的目點是用來被其它類繼承的,它代表一類物件的所具有的公共屬性或方法,那個這個類就

C# 抽象和密閉方法

抽象類abstract: 1.抽象類只存在一個目的就是被繼承;2.抽象類不能夠例項化,只能夠被繼承;3.抽象類可以包含抽象成員和普通成員,以及他們的任意組合;4.抽象類的抽象成員在派生類中需要使用override關鍵字實現。 using System; using System.Collection

[收集]c++抽象、純虛擬函式以及巧用純虛解構函式實現介面

在Java、C#中有關鍵詞abstract指明抽象函式、抽象類,但是在C++中沒有這個關鍵詞,很顯然,在C++也會需要只需要在基類宣告某函式的情況,而不需要寫具體的實現,那C++中是如何實現這一功能的,答案是純虛擬函式。 含有純虛擬函式的類是抽象類,不能生成物件,只能派生。

c+-----------------------------抽象

C++抽象類 一、純虛擬函式定義. 純虛擬函式是在基類中宣告的虛擬函式,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中實現純虛擬函式的方法是在函式原型後加“=0”

關於C++抽象建立物件的問題

 抽象類是無法建立物件、但可以定義指標、該指標可以指向它的派生類,進而實現多型性,也可以通過引用。 class A{ public:     virtual int getA() = 0; }; class B : public A { public:    virtual

C# 抽象、密封

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T

java繼承、多臺、抽象概念

1.繼承中的構造方法 繼承解決程式碼複用問題! 子類的構造過程中必須呼叫其父類的構造方法,否則是無源之水了。如果子類的構造方法中沒有顯式的呼叫基類構造方法,則系統預設呼叫基類無引數的構造方法。 子類可以在自己的構造方法中使用super([引數列表])呼叫基類的構造方法,使用this([引數列表])呼叫本類的

C#抽象

所有 連接 con string 彌補 合並 void 標準 抽象 一、繼承 什麽是繼承:繼承是允許重用現有類去創建新類的過程。分類的原則是一個類派生出來的子類具有這個類的所有非私有的屬性。1、繼承C#中的類:C#不支持多重繼承,C#類始終繼承自一個基類(如果未在聲明中指

C# 抽象抽象方法

必須 override pre pac ole ride ret 派生 bstr using System; namespace 抽象類與抽象方法 { class Program { static void Main(str

C#基礎 、結構、抽象、接口的相關概念

索引器 設計模式的 小數據 自定義 引用 equals 執行 派生 trac 先來簡單說一下他們各自的含義是什麽: 類(class):類類型是由字段數據(成員變量)和操作字段數據的成員(屬性、方法、構造函數、事件等)所構成的自定義類型。其中字段數據表示類實例(對象)的

C# 接口與抽象

虛方法 聲明 bsp 抽象類 抽象 類繼承 strac 應該 str (1)抽象類使用abstract關鍵字進行定義,接口使用interface關鍵字定義,他們都不能進行實例化。 (2)抽象類中可以包含虛方法、非抽象方法、靜態成員;接口中不能包括虛方法、任何靜態成員 並

C#.NET裏面抽象和接口有什麽區別

end 吃飯 動物 虛方法 根據 自定義 private this sse 1.面向接口編程和面向對象編程是什麽關系 首先,面向接口編程和面向對象編程並不是平級的,它並不是比面向對象編程更先進的一種獨立的編程思想,而是附屬於面向對象思想體系,屬於其一部分。或者說,

C# 接口和抽象的區別

多繼承 構造函數 狀態 簽名 模式 抽象方法 回調 修飾符 什麽 這個問題基本上可以說是 面試時的必問問題 C# 中的接口和抽象類 相同點: 1. 都不能直接實例化,都可以通過繼承實現其抽象方法 2. 都是面向抽象編程的技術基礎,實現了諸多的設計模式 不同點: 1

【轉】C#中的兩把雙刃劍:抽象和接口

實例 可維護 對象 為什麽不使用 程序 一定的 代碼 方式 索引 轉:http://www.cnblogs.com/djzxjblogs/p/7587735.html 第一次面試的時候, 面試官問我,抽象類和接口的區別。 本人也是,按照面試寶典上的回答,說了一大堆。