参考自d程序设计语言---个人博客http://my.oschina.net/u/218155/blog?fromerr=SwOkb7Sw fllow me编程
跟绝大部分opp编程语言的接口相似。
编程语言
d语言的接口能够增长修饰符 private protected public ide
d语言也支持抽象类,使用abstract语法。this
d语言也支持,内中嵌套类,方法中嵌套类,
spa
class A{private DbObject _db; alias _db this;}这个是个很变态的语法,A能够任意转换成DbObject对象.net
import std.stdio; import std.array; interface light{ final void showLight(){ up(); down(); } /* private: void up(); void down(); */ void up(); void down(); } class PhoneLight : light{ int a = 0; //override private void up(){ override void up(){ a = 1; showstatus(); } //override private void down(){ override void down(){ a = 0; showstatus(); } void showstatus(){ writeln(a); } } class Shape{ abstract void draw(); } class RectangularShape : Shape{ abstract void drawFrame(); } class Rectangle:RectangularShape { override void draw(){ writeln("override draw"); } } class DbObject{ public void connect(){ writeln("connect to db"); } } class SolidRectangle:Rectangle{ private DbObject _db; alias _db this; this(){ _db = new DbObject(); } override void drawFrame(){ writeln("override drawFrame"); } } class Outer{ int x = 0; static int x1 = 1; void fun(int a){ writeln(a); } static class Inner2{ void func(){ writeln(x1); } } class Inner{ int y; void gun(){ fun(x+y); } } } void func(int x){ class Inner{ int y; void gun(){ writeln(x+y); } } auto iner = new Inner; iner.y =11; iner.gun(); } interface Stack(T){ @property bool empty(); @property ref T top(); void push(T value); void pop(); } class StackImpl(T):Stack!T{ private T[] _store; @property bool empty(){ return _store.empty; } @property ref T top(){ assert(!empty); return _store.back; } void push(T value){ _store ~= value; } void pop(){ assert(!empty); _store.popBack(); } } unittest { auto stack = new StackImpl!int; assert(stack.empty); stack.push(111); stack.push(222); assert(stack.top == 222); stack.pop(); assert(stack.top == 111); func(21); Outer outer = new Outer; auto obj = outer.new Inner; auto pl = new PhoneLight(); //pl.up(); //pl.down(); pl.showLight(); //auto rectangele = new Rectangle(); auto solid = new SolidRectangle(); solid.drawFrame(); solid.connect(); DbObject db = solid; db.connect(); }