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官方程式設計風格 三元符.三個...