QA@IT
«回答へ戻る

体裁修正

0
 
 次の例を見てください。(細かいclassの書き方は省略します。)
 例:
-class HelloAction implements java.awt.ActionListener
+class HelloAction implements
+    java.awt.ActionListener
 {
   public void actionPerformed( java.awt.ActionEvent event )
   {
   }
 }
 
-class GoodbyAction implements java.awt.ActionListener
+class GoodbyAction implements
+    java.awt.ActionListener
 {
   public void actionPerformed( java.awt.ActionEvent event )
   {
   }
 }
 
-javax.swing.JButton button = new javax.swing.JButton( "Button" );
+javax.swing.JButton
+  button = new javax.swing.JButton( "Button" );
+
 button.addActionListener( new HelloAction() );
 button.addActionListener( new GoodbyAction() );
 

単に共通する関数を再利用できるって所ではないでしょうか。
そもそも動的型付言語では要らないので、Javaで関数の再利用を利用するための仕組みと考えておけばよいのではないでしょうか。

次の例を見てください。(細かいclassの書き方は省略します。)
例:
class HelloAction implements
    java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Hello" )
  }
}

class GoodbyAction implements
    java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Goodby" )
  }
}

javax.swing.JButton
  button = new javax.swing.JButton( "Button" );

button.addActionListener( new HelloAction() );
button.addActionListener( new GoodbyAction() );

Buttonを表示し、Buttonを押すとHelloとGoodbyをConsoleに出力するという単純な例です。
ここで注目すべきは、この2行です。

button.addActionListener( new HelloAction() );
button.addActionListener( new GoodbyAction() );

HelloActionと、GoodbyActionは、java.awt.ActionListenerを実装していなければbutton.addActionListenerの引数に指定することはできません。button.addActionListenerを実装しているからこそ、button.addActionListenerを、HelloActionとGoodbyActionによって利用できるようになるのです。今回の例では、HelloAction、GoodbyActionそれぞれ大した事をしていないので、あまり価値があるように見えません。ただ、本格的にApplicationを作成する場合は、Fileを開く動作(FileOpenAction)だったり切り取りを行う動作(CopyAction)だったりを登録していく事になります。

今回GUIを例にしましたが、単に文字操作といった場合でも同じように一つの関数を複数のclassで使用しようと思えばinterfaceを利用することができます。
余談ですが、上記の例は、interfaceを使わず実装継承を使ってもできます。敢えて実装継承を使わずinterfaceを使う理由は何かと言われた場合理由は2個あります。
・Javaでは1つのclassで実装継承が1回しかできない。そのかわりinterfaceであれば1個のclassに何回でも実装することが出来る。
・実装継承が必要な場合というのは、super classに何らかの実装が必要な場合だけ。一切実装が必要ないならinterfaceで良い。
その様な事情があり、実装継承を使わずinterfaceを使うことがあります。

単に共通する関数を再利用できるって所ではないでしょうか。
そもそも動的型付言語では要らないので、Javaで関数の再利用を利用するための仕組みと考えておけばよいのではないでしょうか。

次の例を見てください。(細かいclassの書き方は省略します。)
例:
class HelloAction implements
    java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Hello" )
  }
}

class GoodbyAction implements
    java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Goodby" )
  }
}

javax.swing.JButton
  button = new javax.swing.JButton( "Button" );

button.addActionListener( new HelloAction() );
button.addActionListener( new GoodbyAction() );

Buttonを表示し、Buttonを押すとHelloとGoodbyをConsoleに出力するという単純な例です。
ここで注目すべきは、この2行です。
>button.addActionListener( new HelloAction() );
>button.addActionListener( new GoodbyAction() );

HelloActionと、GoodbyActionは、java.awt.ActionListenerを実装していなければbutton.addActionListenerの引数に指定することはできません。button.addActionListenerを実装しているからこそ、button.addActionListenerを、HelloActionとGoodbyActionによって利用できるようになるのです。今回の例では、HelloAction、GoodbyActionそれぞれ大した事をしていないので、あまり価値があるように見えません。ただ、本格的にApplicationを作成する場合は、Fileを開く動作(FileOpenAction)だったり切り取りを行う動作(CopyAction)だったりを登録していく事になります。

今回GUIを例にしましたが、単に文字操作といった場合でも同じように一つの関数を複数のclassで使用しようと思えばinterfaceを利用することができます。
余談ですが、上記の例は、interfaceを使わず実装継承を使ってもできます。敢えて実装継承を使わずinterfaceを使う理由は何かと言われた場合理由は2個あります。
・Javaでは1つのclassで実装継承が1回しかできない。そのかわりinterfaceであれば1個のclassに何回でも実装することが出来る。
・実装継承が必要な場合というのは、super classに何らかの実装が必要な場合だけ。一切実装が必要ないならinterfaceで良い。
その様な事情があり、実装継承を使わずinterfaceを使うことがあります。

体裁変更

0
 ここで注目すべきは、この2行です。
 >button.addActionListener( new HelloAction() );
 >button.addActionListener( new GoodbyAction() );
+
 HelloActionと、GoodbyActionは、java.awt.ActionListenerを実装していなければbutton.addActionListenerの引数に指定することはできません。button.addActionListenerを実装しているからこそ、button.addActionListenerを、HelloActionとGoodbyActionによって利用できるようになるのです。今回の例では、HelloAction、GoodbyActionそれぞれ大した事をしていないので、あまり価値があるように見えません。ただ、本格的にApplicationを作成する場合は、Fileを開く動作(FileOpenAction)だったり切り取りを行う動作(CopyAction)だったりを登録していく事になります。
 
 今回GUIを例にしましたが、単に文字操作といった場合でも同じように一つの関数を複数のclassで使用しようと思えばinterfaceを利用することができます。

単に共通する関数を再利用できるって所ではないでしょうか。
そもそも動的型付言語では要らないので、Javaで関数の再利用を利用するための仕組みと考えておけばよいのではないでしょうか。

次の例を見てください。(細かいclassの書き方は省略します。)
例:
class HelloAction implements java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Hello" )
  }
}

class GoodbyAction implements java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Goodby" )
  }
}

javax.swing.JButton button = new javax.swing.JButton( "Button" );
button.addActionListener( new HelloAction() );
button.addActionListener( new GoodbyAction() );

Buttonを表示し、Buttonを押すとHelloとGoodbyをConsoleに出力するという単純な例です。
ここで注目すべきは、この2行です。

button.addActionListener( new HelloAction() );
button.addActionListener( new GoodbyAction() );

HelloActionと、GoodbyActionは、java.awt.ActionListenerを実装していなければbutton.addActionListenerの引数に指定することはできません。button.addActionListenerを実装しているからこそ、button.addActionListenerを、HelloActionとGoodbyActionによって利用できるようになるのです。今回の例では、HelloAction、GoodbyActionそれぞれ大した事をしていないので、あまり価値があるように見えません。ただ、本格的にApplicationを作成する場合は、Fileを開く動作(FileOpenAction)だったり切り取りを行う動作(CopyAction)だったりを登録していく事になります。

今回GUIを例にしましたが、単に文字操作といった場合でも同じように一つの関数を複数のclassで使用しようと思えばinterfaceを利用することができます。
余談ですが、上記の例は、interfaceを使わず実装継承を使ってもできます。敢えて実装継承を使わずinterfaceを使う理由は何かと言われた場合理由は2個あります。
・Javaでは1つのclassで実装継承が1回しかできない。そのかわりinterfaceであれば1個のclassに何回でも実装することが出来る。
・実装継承が必要な場合というのは、super classに何らかの実装が必要な場合だけ。一切実装が必要ないならinterfaceで良い。
その様な事情があり、実装継承を使わずinterfaceを使うことがあります。

単に共通する関数を再利用できるって所ではないでしょうか。
そもそも動的型付言語では要らないので、Javaで関数の再利用を利用するための仕組みと考えておけばよいのではないでしょうか。

次の例を見てください。(細かいclassの書き方は省略します。)
例:
class HelloAction implements java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Hello" )
  }
}

class GoodbyAction implements java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Goodby" )
  }
}

javax.swing.JButton button = new javax.swing.JButton( "Button" );
button.addActionListener( new HelloAction() );
button.addActionListener( new GoodbyAction() );

Buttonを表示し、Buttonを押すとHelloとGoodbyをConsoleに出力するという単純な例です。
ここで注目すべきは、この2行です。
>button.addActionListener( new HelloAction() );
>button.addActionListener( new GoodbyAction() );

HelloActionと、GoodbyActionは、java.awt.ActionListenerを実装していなければbutton.addActionListenerの引数に指定することはできません。button.addActionListenerを実装しているからこそ、button.addActionListenerを、HelloActionとGoodbyActionによって利用できるようになるのです。今回の例では、HelloAction、GoodbyActionそれぞれ大した事をしていないので、あまり価値があるように見えません。ただ、本格的にApplicationを作成する場合は、Fileを開く動作(FileOpenAction)だったり切り取りを行う動作(CopyAction)だったりを登録していく事になります。

今回GUIを例にしましたが、単に文字操作といった場合でも同じように一つの関数を複数のclassで使用しようと思えばinterfaceを利用することができます。
余談ですが、上記の例は、interfaceを使わず実装継承を使ってもできます。敢えて実装継承を使わずinterfaceを使う理由は何かと言われた場合理由は2個あります。
・Javaでは1つのclassで実装継承が1回しかできない。そのかわりinterfaceであれば1個のclassに何回でも実装することが出来る。
・実装継承が必要な場合というのは、super classに何らかの実装が必要な場合だけ。一切実装が必要ないならinterfaceで良い。
その様な事情があり、実装継承を使わずinterfaceを使うことがあります。

回答を投稿

単に共通する関数を再利用できるって所ではないでしょうか。
そもそも動的型付言語では要らないので、Javaで関数の再利用を利用するための仕組みと考えておけばよいのではないでしょうか。

次の例を見てください。(細かいclassの書き方は省略します。)
例:
class HelloAction implements java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Hello" )
  }
}

class GoodbyAction implements java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Goodby" )
  }
}

javax.swing.JButton button = new javax.swing.JButton( "Button" );
button.addActionListener( new HelloAction() );
button.addActionListener( new GoodbyAction() );

Buttonを表示し、Buttonを押すとHelloとGoodbyをConsoleに出力するという単純な例です。
ここで注目すべきは、この2行です。

button.addActionListener( new HelloAction() );
button.addActionListener( new GoodbyAction() );
HelloActionと、GoodbyActionは、java.awt.ActionListenerを実装していなければbutton.addActionListenerの引数に指定することはできません。button.addActionListenerを実装しているからこそ、button.addActionListenerを、HelloActionとGoodbyActionによって利用できるようになるのです。今回の例では、HelloAction、GoodbyActionそれぞれ大した事をしていないので、あまり価値があるように見えません。ただ、本格的にApplicationを作成する場合は、Fileを開く動作(FileOpenAction)だったり切り取りを行う動作(CopyAction)だったりを登録していく事になります。

今回GUIを例にしましたが、単に文字操作といった場合でも同じように一つの関数を複数のclassで使用しようと思えばinterfaceを利用することができます。
余談ですが、上記の例は、interfaceを使わず実装継承を使ってもできます。敢えて実装継承を使わずinterfaceを使う理由は何かと言われた場合理由は2個あります。
・Javaでは1つのclassで実装継承が1回しかできない。そのかわりinterfaceであれば1個のclassに何回でも実装することが出来る。
・実装継承が必要な場合というのは、super classに何らかの実装が必要な場合だけ。一切実装が必要ないならinterfaceで良い。
その様な事情があり、実装継承を使わずinterfaceを使うことがあります。

単に共通する関数を再利用できるって所ではないでしょうか。
そもそも動的型付言語では要らないので、Javaで関数の再利用を利用するための仕組みと考えておけばよいのではないでしょうか。

次の例を見てください。(細かいclassの書き方は省略します。)
例:
class HelloAction implements java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Hello" )
  }
}

class GoodbyAction implements java.awt.ActionListener
{
  public void actionPerformed( java.awt.ActionEvent event )
  {
    System.out.println( "Goodby" )
  }
}

javax.swing.JButton button = new javax.swing.JButton( "Button" );
button.addActionListener( new HelloAction() );
button.addActionListener( new GoodbyAction() );

Buttonを表示し、Buttonを押すとHelloとGoodbyをConsoleに出力するという単純な例です。
ここで注目すべきは、この2行です。
>button.addActionListener( new HelloAction() );
>button.addActionListener( new GoodbyAction() );
HelloActionと、GoodbyActionは、java.awt.ActionListenerを実装していなければbutton.addActionListenerの引数に指定することはできません。button.addActionListenerを実装しているからこそ、button.addActionListenerを、HelloActionとGoodbyActionによって利用できるようになるのです。今回の例では、HelloAction、GoodbyActionそれぞれ大した事をしていないので、あまり価値があるように見えません。ただ、本格的にApplicationを作成する場合は、Fileを開く動作(FileOpenAction)だったり切り取りを行う動作(CopyAction)だったりを登録していく事になります。

今回GUIを例にしましたが、単に文字操作といった場合でも同じように一つの関数を複数のclassで使用しようと思えばinterfaceを利用することができます。
余談ですが、上記の例は、interfaceを使わず実装継承を使ってもできます。敢えて実装継承を使わずinterfaceを使う理由は何かと言われた場合理由は2個あります。
・Javaでは1つのclassで実装継承が1回しかできない。そのかわりinterfaceであれば1個のclassに何回でも実装することが出来る。
・実装継承が必要な場合というのは、super classに何らかの実装が必要な場合だけ。一切実装が必要ないならinterfaceで良い。
その様な事情があり、実装継承を使わずinterfaceを使うことがあります。