golang面向对象总结
2013-04-22 20:12
127 查看
type $name struct{ property01 int property02 int }
Golang里面的方法和接口都是基于这里type *** struct创建的类型,这里其实可以理解为:
class $name { public int property01; public int property02; }
类型就是类。
所以我们说是类型的某个方法,类型实现了某个接口。
类型是属性的集合,接口是方法的集合
函数的定义:func $funcName ( ) ( ){}
方法的定义:func ( ) $funcName ( ) ( ){}
Func (成员变量 类型) funname(局部变量 类型,局部变量 类型) (返回值类型) {}
成员变量是通过type来定义的。
函数的参数列表是需要传递的局部变量。
golang的方法的类型签名:
1.指明要给哪个类型添加方法;
2.指定调用此方法的变量的是值类型还是指针类型,调用此方法的变量必须按照类型签名这里来决定是用值类型还是指针类型,golang能自动转换,但你必须确保这个变量能被正确转换为相应的值或指针。例如,一个接口类型的变量就没法被转换为一个struct的指针。
继承:
当一个类型B的某个字段(匿名字段)的类型是另一个类型 A的时候,那么类型 A所拥有的全部字段都被隐式地引入了当前定义的这个类型B。这样就实现了继承。B类型的变量就可以调用A的所有属性和方法。也就是说A继承了B。
定义继承时,子类中一般都含有一个类型是父类的匿名字段。匿名字段就是用来实现继承的。
package main import ( "fmt" ) type Animal struct { Name string Age int } func (ani *Animal) GetAge() int { return ani.Age } type Dog struct { Animal //Animal匿名字段 } func main() { dog := Dog{Animal{"dog", 10}} fmt.Println(dog.Age) fmt.Println(dog.GetAge()) }
方法的重写
如果一个类型B实现了作为其属性的类型A中的方法。那么这个类型B的值调用方法的时候调用的是自己类型B的方法,而不是属性类型A的方法。
代码如下:
package main import ( "fmt" ) type Animal struct { Name string Age int } func (ani *Animal) GetAge() int { return ani.Age } type Dog struct { Animal //Animal匿名字段 } func (ani Dog) GetAge() int { return ani.Age + 1 } func main() { dog := Dog{Animal{"dog", 10}} fmt.Println(dog.Age) fmt.Println(dog.GetAge()) }
接口
1 接口
1)定义接口类型
定义接口,接口中可以有未实现的方法。
type Animal interface { GetAge() int }
1)实现接口类型
如果某个类型实现了接口的所有方法。则这个类型实现了这个接口。
type Animal interface { GetAge() int }
type Dog struct {
Name string
Age int
}
//实现GetAge()方法则实现了Animal接口
func (ani Dog) GetAge() int { return ani.Age }
相关文章推荐
- golang面向对象总结
- Golang初级系列教程-面向对象总结
- 黑马程序员_Java学习日记2_面向对象总结1
- php面向对象总结
- C#基础总结之八面向对象知识点总结-继承与多态-接口
- J2SE——面向对象总结
- Java复习笔记+经验总结-02 面向对象基础
- 面向对象的总结(2)
- 黑马程序员----面向对象总结二
- 325工厂模式和面向对象知识点总结(有点乱凑合看)
- 小白学开发(iOS)OC_面向对象总结(2015-07-25)
- 面向对象-总结
- PHP面向对象简单总结
- linux设备驱动归纳总结(三):3面向对象思想和lseek、container_of、write、read 【转】
- 面向对象总结(一)
- 黑马程序员----java基础面向对象总结
- 面向对象总结
- 黑马程序员-----学习日记<5>----面向对象总结1
- Javascript学习总结-面向对象-(五)
- JavaScript学习总结(5)——Javascript面向(基于)对象编程