首页 > 其他分享 >多态

多态

时间:2022-08-29 19:35:05浏览次数:41  
标签:func string 多态 Cat Sleep animal Dog

image-20220829191318419

package main

import "fmt"

//本质是一个指针
type AnimalIF interface {
   Sleep()
   GetColor() string //获取动物的颜色
   GetType() string  //获取动物的种类
}

//具体的类
type Cat struct {
   color string //猫的颜色
}

func (this *Cat) Sleep() {
   fmt.Println("Cat is Sleep")
}

func (this *Cat) GetColor() string {
   return this.color
}

func (this *Cat) GetType() string {
   return "Cat"
}

//具体的类
type Dog struct {
   color string
}

func (this *Dog) Sleep() {
   fmt.Println("Dog is Sleep")

}

func (this *Dog) GetColor() string {
   return this.color
}

func (this *Dog) GetType() string {
   return "Dog"
}

func showAnimal(animal AnimalIF) {
   animal.Sleep() //多态
   fmt.Println("color = ", animal.GetColor())
   fmt.Println("kind = ", animal.GetType())
}

func main() {

   var animal AnimalIF //接口的数据类型, 父类指针
   animal = &Cat{"Green"}

   animal.Sleep() //调用的就是Cat的Sleep()方法 , 多态的现象

   animal = &Dog{"Yellow"}

   animal.Sleep() // 调用Dog的Sleep方法,多态的现象

   cat := Cat{"Green"}
   dog := Dog{"Yellow"}

   showAnimal(&cat)
   showAnimal(&dog)
}

标签:func,string,多态,Cat,Sleep,animal,Dog
From: https://www.cnblogs.com/suehoo/p/16637082.html

相关文章

  • 多态
    python是一门动态语言,严格的来说python不存在多态。defbark(animal):animal.bark()上面的函数bark接收一个对象,并调用了对象的bark方法。对于python来说只要传入......
  • 多态
    多态即同一个方法可以根据发送对象的不同而采用多种不同的行为方式。一个对象的实际类型是确定的,但可以指向对象的引用的类型又=有很多(父类,有关系的类)多态存......
  • Java10-接口,多态
    第一章接口1.1概述接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK7......
  • C++之多态
    C++之多态1静态联编和动态联编C++支持编译时多态(静态多态)和运行时多态(动态多态)。运算符重载和函数重载就是编译时多态,而派生类和虚函数就是运行时多态。静态多态和动态......
  • Java-多态 抽象类 接口
    1.多态1.1多态的概述(记忆)什么是多态​ 同一个对象,在不同时刻表现出来的不同形态多态的前提要有继承或实现关系要有方法的重写要有父类引用指向子类对象1.2......
  • 多态
    0.多态在继承关系的前提下,实例化出不同的对象,这些对象调用相同的方法,但是却表现出不停的行为,这就叫做多态。在C#中体现多态的三种方式:虚方法、抽象类、接口。1、虚方法......
  • 面向对象——多态
    多态即同一方法可以根据发送对象的不同而采用不同的行为方式多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形......
  • 26、多态性与鸭子类型
    26、多态性与鸭子类型  多态与多态性多态指的是一类事物有多种形态,比如动物有多种形态:猫、狗、猪classAnimal:#同一类事物:动物deftalk(self)......
  • [Python学习笔记]Python基础-13 面向对象编程_继承和多态
    继承面向对象的编程有三大特性封装:函数是对语句的封装类是对函数和变量的封装继承类和类之间可以人为,手动的建立父子关系父类的属性和方法,子类可以使用......
  • Java面向对象—封装、继承、多态
    Java面向对象—封装、继承、多态在对面向对象的特征进行分析之前,先让我们来了解一下什么是面向对象。面向对象与面向过程:面向过程:是一种以过程为中心的编程思想,面向过程......