【问题标题】:use 2 class by only calling a single class通过只调用一个类来使用 2 个类
【发布时间】:2013-05-17 02:33:14
【问题描述】:
class merged(){


//i want to be able to use class sample1 and sample2 by just calling this merged class
} 

class sample1(){}
class sample2(){}

或者这样做不理想?你能建议我如何更有效地实现这一点吗?

【问题讨论】:

  • Java 和 C# 是两种不同的语言。选一个。您可以使用 OOP 并使类合并扩展/实现这两个类。
  • @Sanchit - 不在 Java 中。不允许多重继承。
  • 使用接口。请不要将问题标记为 Java 和 C#。
  • @PM77-1 是的,扩展一个类,实现另一个类(通过使其成为接口)或双重实现。有一些方法可以解决这个问题,尽管在某些情况下并不完全理想。上面链接的复合设计模式就是我的做法。

标签: oop coding-style


【解决方案1】:

组成?

Class merged(){

sample1 s1 = new sample1();
sample1 s2 = new sample2();

void doSomething1()
{
s1.dosomething();
}

void doSomething2()
{
s2.dosomething();
}

}

【讨论】:

    【解决方案2】:

    您可以采用如下所示的一种方式(或几种方式的混合)(注意:Java 约定是类名的第一个字母大写):

    public interface Sample1() {
         // abstract methods
    }
    
    public class Sample2() {
         // whatever
    }
    
    public class Merged() extends Sample2 implements Sample1 {
         // whatever
    }
    

    public class Sample1() {
         // abstract methods
    }
    
    public class Sample2() {
         // whatever
    }
    
    public class Merged() {
         Sample1 ob = new Sample1();
         Sample2 ob2 = new Sample2();
    }
    

    public interface Sample1() {
         // abstract methods
    }
    
    public abstract Sample2() {
         // abstract and other methods
    }
    
    public class Merged() extends Sample2 implements Sample1 {
         // whatever
    }
    

    public interface Sample1() {
         // abstract methods
    }
    
    public interface Sample2() {
         // abstract methods
    }
    
    public class Merged() implements Sample1, Sample1 {
         // whatever
    }
    

    【讨论】:

      【解决方案3】:

      您应该使用接口来执行此操作。现代面向对象的编程语言不支持多重继承(相信我,它们不支持是一件好事),因此您需要使用接口来解决这个问题。

      这是一个 Java 示例:

      public interface GasolineUser {
          public double getGasolineGallonsLeft();
      }
      
      public interface MusicPlayer {
          public void playMusic();
      }
      
      public class Car implements GasolineUser, MusicPlayer {
          public double getGasolineGallonsLeft(){
              // return gallons left
          }
      
          public void playMusic(){
              // play music
          }
      }
      

      请注意,在这种情况下,Car 既是 GasolineUser 又是 MusicPlayer,因此可以将其传递给需要其中一个的任何方法或需要另一个的任何方法。 C# 中存在类似的继承。有关接口有用性的更多信息,请在 Google 上搜索 OOP 接口。

      【讨论】:

        猜你喜欢
        • 2016-09-05
        • 2014-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多