24用d程式設計繼承

2021-10-03 09:11:43 字數 2320 閱讀 8384

class

subclass

: superclass

class

clock

}class

alarmclock

: clock

}class

clock

//類不能繼承多個非介面類,

class

alarmclock

: clock

}//----

class

device

class

clock

: device

class

alarmclock

: clock

}//---

class

alarmclock

: clock

// ...

}//多型

class

clock

// ...

}class

alarmclock

: clock

//繼承

// ...

}void

use(clock clock)

auto deskclock =

newalarmclock(10

,15,0

,6,45

);writeln

("before: "

, deskclock)

;use

(deskclock)

;writeln

("after : "

, deskclock)

;//子類變化.多型

//---

import std.random;

class

brokenclock

: clock

override void

reset()

}//重置.

auto shelfclock =

new brokenclock;

use(shelfclock)

;writeln

(shelfclock)

;//是不是變了.仍然按子類的.

//抽象成員函式

class

chesspiece

//必須實現抽象成員函式.父類可能有實現

class

pawn

: chesspiece

//自己實現

}class

chesspiece

//父抽象成員函式有實現

}class

pawn

: chesspiece

//檢查是父?

//檢查子類

return decision;

}}

示例:

class

railwayvehicle

}class

locomotive

: railwayvehicle

class

railwaycar

: railwayvehicle

//介面

class

passengercar

: railwaycar

override void

unload()

}class

freightcar

: railwaycar

override void

unload()

}//兩個繼承類

class

train

: railwayvehicle

//鐵路

import std.exception;

// ...

class

train

: railwayvehicle

void

addcar

(railwaycar[

] cars...

)//加車子

// ...

}class

train

: railwayvehicle

writefln

("departing from %s station"

, station);}

void

arrivestation

(string station)}}

//加站點

import std.stdio;

// ...

void

main()

//幹活.

05用d程式設計切片

切片,動態陣列的別名.起.尾 是這樣的 即左包右不包 切片不是實體,就像鑰匙一樣.如果切片修改實體,則實體也跟著變了.a.a 大小為0,a.表示陣列長度,等價於陣列.長度.dup複製實體.如下 import std.stdio void main 賦值 int 3 a 1 1,1 int 3 b 2...

06用d程式設計 串

最簡單定義 char是串,字元陣列 d有三種陣列型別.import std.stdio void main 用 c z 可以看到結果,否則 回車 沒用.readf不適合讀串,讀符就差不多了.readln適合讀串,就不需要 s及 運算子了.如下 import std.stdio void main 可...

08用d程式設計域

不能在內部域中定義與外部域中相同的名字.有的在域的最前定義變數 一般在使用前定義變數,而不是在之後.找不到,也不規範 最好在剛要使用前定義,在速度,不犯錯,可讀,維護上都不錯.import std.stdio void main i 10 i 在 中宣告多種型別變數 d官方程式設計風格 三元符.三個...