修飾子とは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework用語 > 修飾子の意味・解説 

修飾子

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/14 08:30 UTC 版)

キーワード (Java)」の記事における「修飾子」の解説

クラスメンバ宣言に付けられる修飾子である。 public, protected, privateクラスメンバアクセス制御指示する修飾子(アクセス修飾子英語版))である。外部からアクセス可能な範囲決める。Javaでは4つ段階設けられ、以下の番号大きくなるほど外部からのアクセス制約されるpublicでは、すべてのクラスからアクセスできる。 protectedでは、同一パッケージにあるクラスサブクラスからのみアクセスできる。異なパッケージサブクラスでないクラスからはアクセスできないクラス修飾することはできない (内部クラス例外)。 アクセス修飾子ない場合は、同一パッケージ内のクラスからのみアクセスできる。サブクラスであってもパッケージ異な場合アクセスできないprivateでは、他のクラスからはアクセスできず、自クラスからのみアクセスできる。クラス修飾することはできない (内部クラス例外)。 Java SE 1.0ではprivate protectedという組み合わせ使用して自分自身サブクラスからのアクセスができるが同じパッケージ内の他のクラスからはアクセスできないというアクセス権使用することができたが、これはJava SE 1.1以降から廃止され利用することができなくなったfinalフィールドに付けられた場合は再代入禁止するメソッド宣言に付けられた場合は、下位クラス上書きできないことを表す。クラス宣言に付けられた場合は、継承できないことを表す。なお、Javaでは、final宣言されフィールドで、宣言部では初期化せずコンストラクタ内で1回だけ代入できる記述行える。abstractとの併用できないメソッド引数ローカル変数使用すればその引数ローカル変数に対して代入許さないため、堅牢性の高いメソッド作ることができる。final修飾子は「イミュータブル (不変)」なクラス実装するときに役立つ。 例1: public class SampleClass { final int constantValue = 5;} 例2: public class SampleClass { final int constantValue; // 初期化なし // コンストラクタ public SampleClass() { constantValue = 5; // 1回だけ代入できる。 }} staticフィールドに付けられた場合は、クラス属す変数クラス変数静的フィールド、クラスフィールド)が確保されることを表す。この修飾子のついたフィールドは、インスタンスがいくつ生成されてもフィールド実体1つで、すべてのインスタンスの間で共有される記述例: class SampleClass { static String shared = "shared"; static final String STR = "constant";} メソッドに付けられた場合は、オブジェクト生成しなくても直接呼び出せメソッド静的メソッド、クラスメソッド)であることを表す。手続き型言語関数と同じ扱いになる。 例: class Sample1 { // staticメソッド public static void method() { ... }}class Sample2 { void proc() { ... Sample1.method(); // インスタンス生成せず直接実行できる。 ... }} クラス内にstatic {...}というブロック現れ場合は、そのクラス最初に参照されたときにそのブロック内のコード実行する。これを静的初期化子呼び、主にstatic final配列Collectionオブジェクト初期化などに利用されるデータベースアクセスするためにJDBCドライバ呼び出すClass.forName("ドライバ名")もこの静的初期化子呼び出している。 例: class StaticInitSampleClass { private static final List list; static { final List tempList = new ArrayList<>(); tempList.add("Hello,"); tempList.add("World."); StaticInitSampleClass.list = Collections.unmodifiableList(tempList); }} 内部クラス 入れ子にされたクラスネストされたクラス: nested class)のうち、static修飾されていないものは内部クラス (inner class) と呼ばれ暗黙的に外側クラスインスタンスキャプチャして参照することができるが、このネストクラスをstatic修飾する静的ネストクラス (static nested class) となり、暗黙的に外側クラスインスタンス参照できなくなる。 例: class OuterClass { static int outerStaticField = 0; int outerField = 0; class InnerClass { void setOuterField(int value) { outerField = value; // 暗黙参照可能。 outerStaticField = value; // OK。 } } static class StaticClass { void setOuterField(int value) { //outerField = value; // コンパイルエラー。 outerStaticField = value; // OK。 } } public OuterClass() { new InnerClass().setOuterField(100); new StaticClass().setOuterField(-100); } public static void test() { final OuterClass outer = new OuterClass(); System.out.println("OuterField = " + outer.outerField); System.out.println("OuterStaticField = " + outerStaticField); }} abstract クラスまたはメソッドに付けられる修飾子である。final併用することはできないJavaでは、実装されないメソッドがあるクラス作成することができる。抽象クラス自身インスタンス作成することはできない似たものとしてインタフェースがあるが、abstract class は以下の点においてインタフェース異なる。 コンストラクタを持つことができる メソッドなどの実装記述できる インスタンス変数を持つことができる abstract classそのままではインスタンス化できず、不足しているメソッド実装した派生クラス用意して使用する記述例: public abstract class Sample { // 実装があるメソッド public void method1() { ... } // 実装がないメソッド public abstract void method2();} nativeメソッドJava言語以外で実装されていることを宣言するJava Native Interface参照)。 synchronizedメソッド宣言特定のブロックに付けられ、排他制御指示する同一オブジェクト複数オブジェクトから参照され異なスレッド同時に処理を行っている場合でも、この修飾子があるブロックでは処理を行えスレッドはただ1つしか存在しない記述例1: public synchronized void method() { ... } 記述例2: public void method() { ... synchronized(this) { // 自クラスインスタンスに対して排他制御 // 排他制御されるブロック } ...} 記述例3: public void method(Object obj) { ... synchronized(obj) { // Object obj に対して排他制御 // 排他制御されるブロック } ...} volatileフィールド宣言に付けられ、キャッシュを見に行かずに常に最新の値を見に行くようになるマルチスレッド下における軽量かつ限定的な同期理に使われる。 例: public class SampleClass { volatile int syncSample; ...} transientフィールド宣言につけられるJavaにはオブジェクトそのままネットワーク送信したファイルなどに保存したりするためのシリアライズ呼ばれる機能があり、transient は対象フィールドシリアライズ対象ならないことを指示する。スレッドオブジェクトなど、保存できないフィールド保存される不都合なフィールドに対して使用される

※この「修飾子」の解説は、「キーワード (Java)」の解説の一部です。
「修飾子」を含む「キーワード (Java)」の記事については、「キーワード (Java)」の概要を参照ください。

ウィキペディア小見出し辞書の「修飾子」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ

「修飾子」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「修飾子」の関連用語

修飾子のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



修飾子のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのキーワード (Java) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS