Go继承的方法重写,继承抽象类实现

本文探讨了在Go语言中如何实现类似于Java的方法重写和抽象类的功能。通过示例展示了如何在Go中重写方法,如Eat、Run,并解释了在没有显式抽象类的情况下,如何利用接口和函数指针来达到抽象类的效果,以实现代码的复用和多态性。
摘要由CSDN通过智能技术生成

Go继承的方法重写,继承抽象类实现

go的接口和继承就没什么好说的了,基本上大家都知道怎么玩,这里说下可能会困扰大家的问题。在Java里方法的重写和抽象类是很好用的,对于抽象和尽量共用抽象出来的代码很重要,但是用go很多人又不知道该怎么写才好,所以这里说下在go里怎么实现

方法重写

func main() {
   
	m := &Man{
   }
	m.Eat()
	m.Run()
	m.Sleep()
}

type Person struct {
   
}

func (this *Person) Eat() {
   
	fmt.Println("Person Eat")
}

func (this *Person) Run() 
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
1关:继承方法重写 继承是面向对象编程中的一种重要的概念,它允许我们创建一个新类,从现有的类中继承属性和方法。子类可以继承父类中的公共方法和属性,并且可以重写父类中的方法来实现自己的功能。 方法重写是指子类重写父类中已经存在的方法。子类可以根据自己的需要重新定义一个父类中的方法,使其具有不同的行为。在子类中重写方法时,方法名、参数列表、返回类型必须与父类中被重写的方法完全相同。 例如,我们创建一个父类Animal和一个子类Dog,子类Dog继承了父类Animal中的属性和方法,并且重写了其中的方法: ```java public class Animal { private String name; public Animal(String name) { this.name = name; } public void eat() { System.out.println(name + " is eating."); } } public class Dog extends Animal { public Dog(String name) { super(name); } @Override public void eat() { System.out.println("The dog is eating bones."); } } ``` 在上面的例子中,我们定义了一个Animal类,它有一个属性name和一个方法eat,然后我们创建了一个Dog类,它继承了Animal类,并且重写了eat方法。在Dog类中的eat方法中,我们打印出了一条狗在吃骨头的语句。 2关:抽象类 抽象类是一种特殊的类,它不能被实例化,只能被继承抽象类中可以包含抽象方法和具体方法。抽象方法是一种没有实现的方法,它只有方法的声明,没有方法体,而具体方法则是有实现的方法。 抽象类通常用于定义一些抽象的概念,它可以被子类继承实现抽象类不能被实例化,只能被用作父类。 例如,我们可以定义一个抽象类Animal,其中包含一个抽象方法eat: ```java public abstract class Animal { private String name; public Animal(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public abstract void eat(); } ``` 在上面的例子中,我们定义了一个抽象类Animal,其中包含了一个抽象方法eat,它没有方法体,只有方法的声明。这个抽象类不能被实例化,只能被继承。 3关:接口及实现类定义 接口是一种规范或者一种约定,它定义了一个类应该做什么,但并不规定类应该怎么做。接口中只包含方法的声明,没有方法的实现,它是一种纯粹的抽象概念。 实现类是实现接口的类,它们必须实现接口中的所有方法。实现类可以实现多个接口,这样就可以同时具有多种功能。 例如,我们可以定义一个接口Animal,其中包含一个方法eat: ```java public interface Animal { void eat(); } ``` 在上面的例子中,我们定义了一个Animal接口,其中只包含一个方法eat,没有方法的实现。这个接口可以被其他类实现。 然后我们可以创建一个实现类Dog,它实现了Animal接口: ```java public class Dog implements Animal { @Override public void eat() { System.out.println("The dog is eating bones."); } } ``` 在上面的例子中,我们创建了一个实现类Dog,它实现了Animal接口中的eat方法,并且实现了自己的功能,即打印出一条狗在吃骨头的语句。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值