gpt4 book ai didi

java - 继承 : using base class or derived class to do stuff

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:07:44 26 4
gpt4 key购买 nike

<分区>

这是一个关于应该如何使用继承的简单问题。

考虑到我必须提供打印“foo”和“bar”的业务逻辑,并且我有两个类的层次结构:一个类具有仅打印“foo”的方法,另一个首先扩展并具有打印“bar”的方法'.在这两个类中,我都有一个名为 necessaryMethod() 的方法,它负责调用打印“foo”和“bar”的那些方法。

我的实现方式有两种:

第一种方法是让基类做一些事情,派生类利用它。第二种方法是让基类不做任何事情(只提供实现)并将所有责任交给派生类。

考虑以下代码:

方法一:

public class A{

protected void necessaryMethod(){
callFoo();
}

protected void callFoo(){
System.out.pritln("foo");
}
}

public class B extends A{

@Override
protected void necessaryMethod(){
super.necessaryMethod();
callBar();
}

protected void callBar(){
System.out.println("bar");
}
}

public class FooBarClass{
public static void main(String args[]){
B b = new B();
b.necessaryMethod();
}
}

方法 2:

public abstract class A{

protected abstract void necessaryMethod();

protected void callFoo(){
System.out.pritln("foo");
}
}

public class B extends A{

@Override
protected void necessaryMethod(){
calFoo();
callBar();
}

protected void callBar(){
System.out.println("bar");
}
}

public class FooBarClass{
public static void main(String args[]){
B b = new B();
b.necessaryMethod();
}
}

哪种方法对代码的可维护性和可读性更好(在大型软件产品/大类层次结构的上下文中;这只是一个示例)?

(这是一个一般的编程问题,我没有征求意见。)

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com