- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Go语⾔和Java的⾯向对象⽐较
⽤写论⽂的⼼态写博客
中国的百度百科上对Go语⾔是这样阐述的:“Go(⼜称Golang)是Google开发的⼀种静态强类型、编译型、并发型,并具有垃圾
回收功能的编程语⾔”。维基百科上对Go语⾔是这样阐述的:“Go (also referred to as Golang) is a statically typed, compiled
programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson.Go is syntactically similar to
C, but with memory safety, garbage collection, structural typing,and CSP-style concurrency.”。维基百科上翻译过来意思其实和
百度百科差不多。不管是百度还是维基都没有直接说Go语⾔到底是不是⼀门⾯向对象的语⾔。
这⼀来,就导致了业内对Go语⾔到底是不是⼀门⾯向对象的语⾔产⽣了⼀波讨论。有的认为Go语⾔没有像Java⼀样通过Class关键
字直接标记类,所以严格意义上来说Go语⾔不是⼀门⾯向对象的编程语⾔。有的认为Go语⾔虽然没有直接使⽤像Java和C#的Class关键
字,但是Go语⾔可以通过⼀些编程技巧,⽐如巧妙的使⽤结构体,接⼝等,Go语⾔同样能达到与⾯向对象同样效果,所以这群⼈认为Go语
⾔是⼀门⾯向对象的编程语⾔。“公说公有理,婆说婆有理”,笔者⽐较偏向后者的观点。
业内基本上说⾯向对象都是说Java,C#等⾼级编程语⾔。通过其他语⾔总结出了⾯向对象的三⼤特性:封装、继承和多态。以下是
摘⾃博客园博主的三段⽂字介绍。
封装,就是把客观事物封装成抽象的类,并且类可以把⾃⼰的数据和⽅法只让可信的类或者对象操作,对不可信的进⾏信息隐藏。⼀
个类就是⼀个封装了数据以及操作这些数据的代码的逻辑实体。在⼀个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通
过这种⽅式,对象对内部数据提供了不同级别的保护,以防⽌程序中⽆关的部分意外的改变或错误的使⽤了对象的私有部分。
不知道读者是否学过Java代码,在Java中,我们会经常看到如下代码 :⼀个矩形的简单定义,x代表的是长,y代表的是宽。Rect⽅
法是⼀个构造函数,getArea⽅法是⼀个求该矩形⾯积函数。private和public代表属性或者⽅法的访问权限。在Java中,通过关键字
private、public、protected、default来控制访问权限,⽽在Go语⾔中则是通过申明变量的⼤⼩写字母来控制变量和⽅法的访问权限,字
母开头以⼤写则为包外可见,开头以⼩写则为包内可见。
public class Rect {
private int x;//矩形的长
private int y;//矩形的宽
public Rect(int x, int y) {//构造函数
this.x = x;
this.y = y;
}
public int getX() {//getter
return x;
}
public void setX(int x) {//setter
this.x = x;
}
public int getY() {//getter
return y;
}
public void setY(int y) {//setter
this.y = y;
}
public int getArea(){//求⾯积函数
return x * y;
}
}
⽽在Go语⾔中,上⾯的Java代码,则要写成如下。
type Rect struct {
x,y int
}
func (r *Rect) GetArea() int{
return r.x * r.y
}
func NewRect(x, y int) *Rect {
return Rect{x,y}
}
func (r *Rec
原创力文档


文档评论(0)