JAVA基礎コース(14日目)
7156 ワード
JAVA基礎コース
14日目
内部クラス
(1)JavaであるクラスAを別のクラスBに宣言することを許可すると,クラスAは内部クラスであり,クラスBは外部クラスである.
(2)内部クラスの分類,メンバ内部クラス(静的,非静的)vs局所内部クラス(メソッド内,コードブロック内,コンストラクタ内)
(3)メンバー内部クラス
--外部クラスのメンバーとして
①外部クラスを呼び出す仕組み
②staticで修飾できる
③4種類の修飾子で修飾できる
--クラスとして
①クラス内で属性、メソッド、コンストラクタなどを定義できる
②はfinalで修飾することができ、このような継承ができないことを表す.final修飾を受けずに継承できます
③abstractで修飾できる
(4)次の3つの問題に注目
①メンバー内部クラスオブジェクトのインスタンス化
②外部クラスを呼び出す仕組みをメンバー内クラスで区別する方法
③開発におけるローカル内部クラスの使用
14日目
内部クラス
(1)JavaであるクラスAを別のクラスBに宣言することを許可すると,クラスAは内部クラスであり,クラスBは外部クラスである.
(2)内部クラスの分類,メンバ内部クラス(静的,非静的)vs局所内部クラス(メソッド内,コードブロック内,コンストラクタ内)
(3)メンバー内部クラス
--外部クラスのメンバーとして
①外部クラスを呼び出す仕組み
②staticで修飾できる
③4種類の修飾子で修飾できる
--クラスとして
①クラス内で属性、メソッド、コンストラクタなどを定義できる
②はfinalで修飾することができ、このような継承ができないことを表す.final修飾を受けずに継承できます
③abstractで修飾できる
(4)次の3つの問題に注目
①メンバー内部クラスオブジェクトのインスタンス化
②外部クラスを呼び出す仕組みをメンバー内クラスで区別する方法
③開発におけるローカル内部クラスの使用
package com.test.course.inner;
/**
* @author PitterWang
* @create 2020/5/2
* @since 1.0.0
*/
public class Animal {
String name;
public static int age;
public void eat(){
System.out.println(" ");
}
public void setName(String name){
this.name = name;
}
/***
*
*/
static class Dog{
String name;
public Dog(){
}
public void eat(){
System.out.println("Dog ");
}
public void getWhoName(){
age = 12;
//Animal.this.name = "Bird";//
//setName("Bird");//
this.eat();
}
}
/***
*
*/
class Bird{
String name;
public Bird(){
}
public void eat(){
System.out.println("Bird ");
}
public void getWhoName(){
setName("Bird");
Animal.this.name = "Bird";
Animal.this.eat();
this.eat();
}
}
}
package com.test.course.inner;
/**
* 〈 〉
* @author PitterWang
* @create 2020/5/2
* @since 1.0.0
*/
public class InnerClassTest {
public static void main(String[] args) {
/**
*
*/
Animal.Dog dog = new Animal.Dog();
dog.getWhoName();
/***
*
*/
Animal animal = new Animal();
Animal.Bird bird = animal.new Bird();
bird.getWhoName();
}
}