2013-05-17 3 views
0
class merged(){ 


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

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

Или это не идеальное? можете ли вы предложить, как я могу реализовать это более эффективно?использовать класс 2, позвонив только одним классом

+3

Java и C# - это два разных языка. Выбери один. Вы можете использовать ООП и объединить класс, чтобы расширить/реализовать оба класса. – Sanchit

+0

@ Sanchit - Не в Java. Разрешено множественное наследование. –

+0

@ PM77-1 Не в C# – Blorgbeard

ответ

5

Состав?

Class merged(){ 

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

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

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

} 
+1

+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 
} 
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#. Для получения дополнительной информации о полезности интерфейсов выполните поиск Google на интерфейсах ООП.

Смежные вопросы