[AVA]16日目(抽象クラス)
8月5日(木)
Test109~Test113
抽象クラス
抽象クラス(Abstract)は、宣言のみで定義されていない1つ以上のメソッド(抽象メソッド)を持つクラスであり、メモリを無駄にしないでサブクラスに予想されるメソッドをoverridingし、呼び出し計画を事前に作成することを目的としている.
抽象クラス(Abstract)フォーマットと構造
クラスに少なくとも1つの抽象メソッドが含まれている場合、クラスの前に「abstract」キーを付けて抽象クラスとしてマークする必要があります.抽象クラスとして宣言されている場合は、不完全な閉パッケージであるため、オブジェクトを生成できません.
クラス名ob=newクラス名();<==これはできません!
抽象メソッドが存在しない抽象クラスでもオブジェクトを作成できません.
すなわち,抽象クラスは独立して存在せず,継承のためにしか存在しない.
抽象クラスから継承されるサブクラスでは、
抽象的な方法を超えなければならない.
※『抽象』キーワードはクラスやメソッドでのみ使用でき、メンバー変数やローカル変数では使用できません.
▪ 📝
Test109~Test113
抽象クラス
抽象クラス(Abstract)は、宣言のみで定義されていない1つ以上のメソッド(抽象メソッド)を持つクラスであり、メモリを無駄にしないでサブクラスに予想されるメソッドをoverridingし、呼び出し計画を事前に作成することを目的としている.
抽象クラス(Abstract)フォーマットと構造
// 틀만 작성해 놓은 것!
[접근제어지시자] abstract class 클래스명
{
[접근제어지시자] abstract 자료형 메소드명([매개변수], ...);
}
抽象クラスフィーチャークラスに少なくとも1つの抽象メソッドが含まれている場合、クラスの前に「abstract」キーを付けて抽象クラスとしてマークする必要があります.抽象クラスとして宣言されている場合は、不完全な閉パッケージであるため、オブジェクトを生成できません.
クラス名ob=newクラス名();<==これはできません!
抽象メソッドが存在しない抽象クラスでもオブジェクトを作成できません.
すなわち,抽象クラスは独立して存在せず,継承のためにしか存在しない.
抽象クラスから継承されるサブクラスでは、
抽象的な方法を超えなければならない.
※『抽象』キーワードはクラスやメソッドでのみ使用でき、メンバー変数やローカル変数では使用できません.
▪ 📝
// 추상 클래스
abstract class SortInt111
{
private int[] value;
protected void sort(int[] value)
{
this.value = value;
sorting();
}
// 추상 메소드
protected abstract void sorting();
protected int dataLength()
{
return value.length;
}
// 『final』 키워드로 인해
// 이 클래스(SortInt111)를 상속받는 클래스에서
// 이 메소드를 재정의(Method Overriding)할 수 없다.
protected final int compare(int i, int j)
{
int x = value[i];
int y = value[j];
if(x==y)
return 0;
else if(x>y)
return 1;
else
return -1;
}
protected final void swap(int i, int j)
{
int temp = value[i];
value[i] = value[j];
value[j] = temp;
}
}
// Sort111(추상 클래스)를 상속받은 클래스 -> 일단은 추상 클래스
// -> 추상 메소드 『sorting()』을 Override -> 일반 정상 클래스
//public abstract class Test111 extends SortInt111
public class Test111 extends SortInt111
{
static int[] data = {7, 10, 3, 8, 7};
@Override //상속받은 데이터랭스, 컴페어, 스왑 들어가있음
//protected abstract void sorting();
protected void sorting(){
//selection sort
for(int i=0; i<dataLength()-1; i++){
for(int j=i+1; j<dataLength(); j++){
// 크기비교
if(compare(i,j)>0)
{
// 자리바꿈
swap(i,j);
}
}
}
}//end sorting
public static void main(String[] args)
{
//SortInt111 ob = new SortInt111();
//Test111 ob = new Test111();
//추상클래스이기 때문에 안됨~!
Test111 ob = new Test111();
System.out.print("Source Data : ");
for (int n : data)
System.out.printf(n + " ");
System.out.println();
ob.sort(data);
System.out.print("Sorted Data : ");
for (int n : data)
System.out.printf(n + " ");
System.out.println();
}
}
/* 실행 결과
Source Data : 7 10 3 8 7
Sorted Data : 3 7 7 8 10
계속하려면 아무 키나 누르십시오 . . .
*/
Reference
この問題について([AVA]16日目(抽象クラス)), 我々は、より多くの情報をここで見つけました https://velog.io/@hyojin_j/JAVA16일차메소드-오버라이딩추상클래스업-캐스팅다운-캐스팅テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol