skillup

技術ブログ

Java

Javaのオブジェクト指向に関して

投稿日:

staticメソッド

静的なメソッドで名前付き定数やユーティリティメソッドなどインスタンスを生成することなく使用するメソッド。

どちらかというと例外的な使い方です。

インスタンスメソッド、インスタンス変数にアクセスできないなどのデメリットがある。

アクセス修飾子

public・・・無制限にアクセスできる

(何も記述しない)・・パッケージプライベート 同じパッケージの中からアクセスできる

protected ・・パッケージに加え、継承したクラスのアクセスも許可する

private・・自分自身からしかアクセスさせない

なお変数のアクセス制限はクラスのアクセス制限が適用されてからになるので、publicがついていてもクラス自身がディフォルトスコープの場合、パッケージ外からアクセスできない。

抽象クラス

  • abstract修飾子がつくことで抽象メソッドを持つことができる(つけないと持てない)
  • インスタンス生成が不可能になる。(継承を前提とすることになる)

オーバーライド(親クラスのメソッドを上書きすること)

  • 同じシグネチャ(メソッド名と引数型)のメソッドは継承先のクラスで再定義することが可能。
  • ただしいくつか原則がある。
  • シグネチャ(メソッド名と引数型)を変更することはできない
  • アクセス修飾子は変更できるが、元のアクセス修飾子よりも緩くなければいけない
  • 戻り値は変更できるが、元の型のサブタイプでなければいけない。
  • throws節は削除または変更できるが、変更する場合、元の型のサブタイプでなければいけない
  • 元のメソッドがfinalだとオーバーライドできない。
  • abstractがついている場合、必ず継承しなくてはいけない
  • 継承した場合アノテーションで@overrideをつける
  • オーバーロードと勘違いしないように

オーバーロード(同名メソッドを複数もつこと)

  • 同名のメソッドを定義できるが、引数、戻り値が違っても構わない。
  • ルールとしては戻り値が全部一緒なものはNG。ルールはこれだけ

interface

  • フィールドには暗黙でpublic static final
  • メソッドにはpublic abstractが付く

 

 

 

-Java

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Javadocに関して

業務で社内で使うクラスライブラリを作成中です。 他人に使ってもらうものなのでコメントやドキュメント周りの整備が必要になり、javadocをしっかり作りたいと思っています。 Contents1 java …

no image

スコープアノテーションとCDIについて

JavaEEで個人的に鬼門がCDIとスコープだと思っています。 ここが少しずつ分かりかけてきたんでメモします。 まずJavaEEでは変数の生存期間をアノテーションで定義します。 これがなかなか分かりに …

no image

GlassFish&Junitの不具合

JavaEE(JSF+JavaBean+EJB+JTA)でアプリを製作しているのですが、EJBの部分のjunitができないことが判明しました。 正確に言うとラムダ式を使うと不具合がでます。原因としては …

no image

try~catch~finallyで気を付けること

JavaでExceptionが発生したとき、基本的にはtry~catch~finallyをつかっているのですが、今回Exceptionが吐かれないという事態があったのでメモします。 [crayon-5 …

no image

型パラメータに関して その2

Javaでオブジェクト指向に基づいたコーディングをするために必須であり、最初の難関だったのが型パラメータでした。 Contents1 型パラメータが必要なケース2 型パラメータの制限3 クラスインスタ …