java封装继承多态语法,GO语言中封装,继承,和多态
##封装
go中的封装和java的不太一样,在go里面是没有java中的class,不过可以把struct看成一个类,封装可以简单地看作对struct的封装,如下
type obj1 struct {
valte1 string
}
type obj2 struct {
valte2 string
}
##继承
把struct看做类,struct中可以包含其他的struct,继承内部struct的方法和变量,同时可以重写,代码如下
package main
import "fmt"
type oo struct {
inner
ss1 string
ss2 int
ss3 bool
}
type inner struct {
ss4 string
}
func (i *inner) testMethod(){
fmt.Println("testMethod is called!!!")
}
func main() {
oo1 := new(oo)
fmt.Println("ss4无值:"+oo1.ss4)
oo1.ss4 = "abc"
fmt.Println("ss4已赋值"+oo1.ss4)
oo1.testMethod()//继承调用
oo1.inner.testMethod()//继承调用 这里也可以重写
}
##多态
go中的多台比java的隐匿得多,严格上说没有多态,但可以利用接口进行,对于都实现了同一接口的两种对象,可以进行类似地向上转型,并且在此时可以对方法进行多态路由分发,完全代码如下
package main
import "fmt"
type interfacetest interface {
//testMothod1() string
//testMothod()//这种会报语法错误 在go里面是不允许的
iMethod() //加上int则会报错 说明go的方法判断有返回值,而java没有
}
type obj1 struct {
valte1 string
}
type obj2 struct {
valte2 string
}
//从属不同对象的testMothod 返回值不同的接口实现
func ( obj11 *obj1)iMethod(){
fmt.Println("testMothod go obj1")
}
//从属不同对象的testMothod 返回值不同的接口实现
func ( obj11 *obj2)iMethod() {
fmt.Println("testMothod go obj2")
}
func gorun(ii interfacetest){
fmt.Println(ii.iMethod)
}
func main(){
var i interfacetest
//interfacetest_ := new(interfacetest)//这种方式进行多台路由转发会报错 GO需先声明 如 var i interfacetest
obj1_ := new(obj1)
//赋obj1
i = obj1_
i.iMethod()//正确打印
gorun(i)
gorun(obj1_)
//interfacetest_.testMethod() //这种在java中允许,在go中是不允许的
//赋obj2
obj2_ := new(obj2)
i = obj2_
i.iMethod()//正确打印
gorun(i)
gorun(obj2_)
list := [2]interfacetest{obj1_,obj2_}
slice := []interfacetest{}
slice = append(slice, obj1_)
slice = append(slice, obj2_)
for index,value := range slice {
fmt.Println(index)
fmt.Println(value)
}
fmt.Println(len(slice))
fmt.Println(len(list))
}
java封装继承多态语法,GO语言中封装,继承,和多态相关推荐
- java语言中的 继承_Java语言有关继承的总结
一.继承 1.继承的概念 继承机制是面向对向程序设计不可缺少的关键概念,是实现软件可重用的根基,是提高软件系统的可扩张性与可维护性的主要途径.(它允许创建分等级层次的类). 继承是指一个类的定义可以基 ...
- python语言的语法_Python语言 中的一些特殊语法
本文主要向大家介绍了Python语言 中的一些特殊语法,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.高阶函数 python支持函数式编程,它内置了一些特殊函数,这些函数具有 ...
- c语言中的指针语法,C语言中指针的用法介绍
C语言中指针的用法介绍 for(int i=0;i { num+=*s;s++; } return num; ) 这个例子中的函数 fun统计一个字符串中各个字符的 ASCII 码值之和.前面说了,数 ...
- java继承的范例_Java范例中的继承
java继承的范例 Inheritance in java is one of the core concepts of Object Oriented Programming. Java Inher ...
- java 同时修改同一个数据_Java 语言中锁的设计与应用
前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率.本文旨在对锁相关源码(本文中的源码来自JDK 8).使用场景进行举例,为读者介绍主流锁的知识点,以及不同的 ...
- java继承层次结构,在状态模式中实现继承层次结构 - java
我有一个与此非常相似的设计: 这里的NewOrder,Registered&Granted都有通用方法AddOrderline()和Cancel(),因此将这两种方法重构为父类很容易. 当我要 ...
- java继承父类执行顺序_java中子类继承父类程序执行顺序问题
Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说比较简单,用程序也很容易验证.比如新建一个测试父类. public ...
- c语言运算符的语法,C语言中条件运算符的语法为
条件运算符的语法为: (条件表达式)?(条件为真时的表达式):(条件为假时的表达式) 例如: x=a 条件运算符构成一个表达式.它是C++中唯一一个3元运算符,它们之间用"?"和& ...
- java继承怎么老是出错_java中子类继承父类时总是出错怎么回?
权限public > 包(package,默认,也就是什么权限修饰符都不加) > proteced > private 子类继承了父类的所有成员(这样说实际是不对的),但只能访问父类 ...
最新文章
- android studio 读取内存txt文件_SharedPreference与文件存储
- 八皇后问题 (递归 搜索)
- 数据库:MySQL、HBase、ElasticSearch三者对比
- 【WebRTC---入门篇】(二)WebRTC的目录结构
- 用python写helloworld_Python Helloworld程序简单实现
- memcached和php关系,php – memcacheD这没关系?
- PS网页设计教程——小贴士:在PS中创建复古的页面
- h5下划线怎么设置_【Word技巧】毕业论文封面那条永远对不齐的下划线?
- php 判断访问类型,php如何判断访问系统的用户设备类型(代码示例)
- 服务器pci-e硬盘,来一发干货,PCI-E SSD硬盘使用须知
- PS文字的投影怎么打?
- Chromedrive下载与安装
- CleanMyMac X免费的c盘清理工具
- html5中播放本地音乐播放器,首款HTML5播放器 支持浏览器内播放本地音乐
- iOS 11.0新功能
- 微信小程序开发基础入门笔记
- RTL8188CUS驱动程序编译步骤
- Java代码关于TIFF/TIF图片转PNG
- Win10恢复照片查看器
- neural machine translation by jointly learning to align and translate
热门文章
- Android不使用支持库请求运行时权限
- linux修改arena大小,教大家Resolume Arena怎么设置大屏幕的方法
- UML之类图和包图,对象图
- win10 远程ubuntu
- win10安装dorcker笔记
- MultiResUNet笔记
- opencv 连通域笔记
- cmakelist 寻找opencv
- JS 事件冒泡和事件捕获
- Unexpected key(s) in state_dict: module.backbone.bn1.num_batches_tracked