0
class merged(){


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

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

还是这样做不理想?你能建议我如何更有效地实施这个吗?

4

3 回答 3

5

作品?

Class merged(){

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

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

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

}
于 2013-05-17T02:39:40.283 回答
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
}
于 2013-05-17T02:41:30.770 回答
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在这种情况下,两者都是 a GasolineUserAND a MusicPlayer,因此可以将其传递给任何需要一个的方法或任何需要另一个的方法。C# 中存在类似的继承。有关接口有用性的更多信息,请在 OOP Interfaces 上进行 google 搜索。

于 2013-05-17T02:44:08.333 回答