如何在不使用extends关键字的情况下从另一个类访问方法?

时间:2017-11-14 08:30:23

标签: java oop methods

我有一个主类,后跟两个子类。

如下所示

public class Guitar  {

   public static void main(String argd[]) {
       Artist output = new Artist();
       output.perfomance();
   }
}

  class Artist  {
    String Name;
    void perfomance () {

    }

  }

  class Album {

  }

是否可以从Artist类调用方法性能并在没有extends关键字的Album类中使用它?

2 个答案:

答案 0 :(得分:3)

您可以使用合成而不是继承。

如果专辑扩展艺术家,那么您建议使用相册IS-A艺术家。 但是,如果专辑有艺术家作为成员,那么专辑HAS-A艺术家。

请参阅IS-A vs HAS-A

所以一种方法可能就是

class Album {
  Artist artist;

  Album(Artist artist) {
    this.artist = artist;
  }

  void playLive() {
    artist.performance();
  }
}

所以打电话给你可能会

public class Guitar  {

  public static void main(String[] args) {
     Artist prince = new Artist();
     Album purpleRain = new Album(prince);
     purpleRain.playLive();
  }
}

答案 1 :(得分:2)

方法1 Use composition

从约束器传递Artist对象

  Code = Convert.ToInt32(oneService.Field<object>("service_code"));
  ...  
  VatValue = Convert.ToInt32(oneService.Field<object>("vatvalue"));         

使用设置方法

设置Artist对象
class Album {
  Artist artist;

  Album(Artist artist) {
    this.artist = artist;
  }

  void doSothing() {
    artist.performance();
  }
}

从方法

传递Artist对象
class Album {
      Artist artist;
      void setArtist(Artist artist){ 
         this.artist = artist;
       }
      void doSothing(Artist artist) {
        artist.performance();
      }
    }

方法2 :使功能性能static

class Album {
      Artist artist;

      void doSothing(Artist artist) {
        artist.performance();
      }
    }