Go面向对象设计

1什么是东西导向?

深切进修过Java的同窗城市晓得,在Java中,“一切都是东西”,东西都有本身的属性和办法。在Java中,按照差别的例子,东西能够分为实体东西、营业东西等等。

面向东西是一种老式的软件开发办法,一种编程范式,差别于面向过程的挨次规划语言。我们来举个例子:

For things :小明先生要去上学了。

面向过程的处置形式:小明->:起床->:坐校车->:上学

面向东西的加工形式:小明->上学

所以,东西导向绝对是就过程导向而言的。面向东西的办法将相关的数据和办法做为一个整体来看待,从更高的条理上停行细碎的建模,更接近事物的天然运行形式。

2东西的三年特征

那是一个很陈词滥调的成就,但是关于Java初学者来说,有良多人并没有深入理解那三个特点。

封拆:封拆是指将抱负全国中保留的某个客体的属性与动作绑定正在一同,并摆设正在一个逻辑单元内。例如Java中的private关头字以及getter、setter法子即是一种封拆,不成以单独造访东西的某个属性,而是把每一个属性都放正在东西来处置。承袭:承袭复杂地说即是一种层次模型,那类层次模型能够被重用。承袭会让人们念到父子相干,正在Java面向东西的思惟中也是如斯,但不同的是正在Java中子类具有其父类的属性以及法子,假设不不凡关头字的束缚,子类可以取代父类,并且一个父类能有寡个子类。寡态:寡态是指不同事物正在不同场景下具备不同施展阐发体例的才气。寡态的理论利用层面至多的即是接口以及泛型,是指相反的把持或者函数、历程可传染感动于寡品种型的东西上并获得不同的后果。不同的东西,收到同一消息可以发作不同的后果,那类气象称为寡态性。面向语音东西的法式3.1封拆type Student struct { Peo People Sid int School string}func (stu Student) getName() string { return stu.Peo.Name}//setter法子要运用指针规范,确保set的值是同一个东西func (stu *Student) setName(name string) { stu.Peo.Name = name}3.2继承

Go speech利用构造的嵌套来完成继承。

type People struct { Id int Name string Age int}type Student struct { Peo People Sid int School string}3.3模态

同一的接口能够用差别的东西完成,然后呈现差别的形式。

type HelloService interface { sayHello(name string)}type People struct { Id int Name string Age int}func (peo People) sayHello(name string) { fmt.Println("Hello " + name + ", I am " + peo.Name)}type Student struct { Peo People Sid int School string}func (stu Student) sayHello(name string) { fmt.Println("Hello " + name + ", I am " + stu.Peo.Name)}

试验

import "fmt"func main() { stu := Student{People{1, "zs", 12}, 1, "ZZJM"} stu.Peo.sayHello("Zs") stu.sayHello("Ls") fmt.Println(stu.getName()) stu.setName("ww") fmt.Println(stu.getName())}

后果:

Hello Zs, I am zsHello Ls, I am zszsww

~

您可以还会对下面的文章感兴趣:

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。