仅通过调用单个类来使用2类

时间:2013-05-17 02:33:15

标签: oop coding-style

class merged(){


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

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

或者这样做不理想?能否请您建议我如何更有效地实施?

3 个答案:

答案 0 :(得分:5)

组合物?

Class merged(){

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

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

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

}

答案 1 :(得分: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
}

答案 2 :(得分:1)

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

这是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#中存在类似的继承。有关接口有用性的更多信息,请在OOP接口上进行谷歌搜索。