class merged(){
//i want to be able to use class sample1 and sample2 by just calling this merged class
}
class sample1(){}
class sample2(){}
Czy robienie tego nie jest idealne? czy możesz zasugerować, jak mogę to skuteczniej wdrożyć?
Odpowiedzi:
5 dla odpowiedzi № 1Kompozycja?
Class merged(){
sample1 s1 = new sample1();
sample1 s2 = new sample2();
void doSomething1()
{
s1.dosomething();
}
void doSomething2()
{
s2.dosomething();
}
}
2 dla odpowiedzi nr 2
Możesz przejść na jeden z tych sposobów (lub ich kombinację), jak pokazano poniżej (Uwaga: Konwencja języka Java zakłada, że pierwsza litera nazwy klas jest wielka):
public interface Sample1() {
// abstract methods
}
public class Sample2() {
// whatever
}
public class Merged() extends Sample2 implements Sample1 {
// whatever
}
LUB
public class Sample1() {
// abstract methods
}
public class Sample2() {
// whatever
}
public class Merged() {
Sample1 ob = new Sample1();
Sample2 ob2 = new Sample2();
}
LUB
public interface Sample1() {
// abstract methods
}
public abstract Sample2() {
// abstract and other methods
}
public class Merged() extends Sample2 implements Sample1 {
// whatever
}
LUB
public interface Sample1() {
// abstract methods
}
public interface Sample2() {
// abstract methods
}
public class Merged() implements Sample1, Sample1 {
// whatever
}
1 dla odpowiedzi nr 3
Powinieneś to zrobić z interfejsami.Współczesne języki programowania zorientowanego obiektowo nie obsługują dziedziczenia wielokrotnego (wierz mi, dobrze, że tego nie robią), więc musisz to naprawić za pomocą interfejsów.
Oto przykład w Javie:
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
}
}
Zauważ, że Car
w tym przypadku jest zarówno plik GasolineUser
I a MusicPlayer
, więc można go przekazać do dowolnej metody, która wymagajedna lub jakakolwiek metoda, która wymaga drugiej. Podobne dziedziczenie istnieje w C #. Aby uzyskać więcej informacji na temat przydatności interfejsów, poszukaj w Google na temat interfejsów OOP.