オブジェクト向けCh.3-3継承と多形性~Ch.4-4 String Buffer
19233 ワード
Ch.3-3継承と多形性
理由を引き継ぐ
データの再使用、重複削除、階層化、管理
特長
多重継承不可(複数の親x)
メソッドオーバーロード
親メソッドを上書きし、子メソッドを実行
継承時のコンストラクション関数フィーチャー
親作成者
public Point(int x, int y) {
this.x = x;
this.y = y;
}
サブクラス作成者 public ColorPoint(int x, int y, String color) {
super(x,y);
this.color = color;
//super(x,y) : 오류
}
オブジェクトのシェイプを変換
選択
子を親に変換
タイプ変換を明示的に行う必要はありません.
降格
リダイレクト
明示的に変換する必要があります
public class StudentTest {
public static void main(String[] args) {
Student s1 = new Student();
s1.setGrade(1);
Person p1 = s1; //upcasting(암시적,Implicity)
p1.setName("둘리");
Student s2 = (Student)p1; //downcasting(명시적, explicity)
s2.setMajor("cs");
}
}
Ch.3-4抽象クラスとインタフェース
抽象クラス
エンティティ・クラスの共通属性を抽出して宣言するクラス.
オブジェクトを直接作成および使用できません
拡張用
1つ以上の抽象メソッドがあります(ない場合は、サブクラスに宣言する必要があります).
->抽象的な方法がなくても抽象クラスかもしれません
インタフェース
クラス間の類似した属性(変数、メソッド)を取得し、不自然な継承関係を設定しない
特長
複数を継承可能(+インタフェース間で複数を継承可能)
インタフェースを実装するクラスで抽象メソッド(インタフェースで宣言されたメソッド)を定義する必要があります.
Ch.3-4-6一般クラスVS抽象クラスVSインタフェース
ch.3-4-7 Instanceof演算子
System.out.println(circle instanceof Object); // circle이 Object클래스의 인스턴스인지
System.out.println(circle instanceof Shape); //circle이 Shape클래스의 인스턴스인지
System.out.println(circle instanceof Circle);
// 오류: class는 hierachy 상위와 하위만 instanceof 연산자를 사용할 수 있다.
// System.out.println(circle instanceof Rectangle); : 오류 구문
//interface는 hierachy와 상관없이 instanceof 연산자를 사용할 수 있다.
System.out.println(circle instanceof Drawable); // circle이 Drawable 인터페이스를 구현했는지
System.out.println(circle instanceof Runnable);// circle이 Runnable 클래스의 인스턴스인지
結果値
true
true
true
true
false
Ch.3-6異常処理
異常処理は非常に有用である。
1)ファイル処理時
ファイルが存在しないか、他のプロセスで使用されている場合、例外が発生します.
2)I/O処理
クローズされたI/Oストリームの処理中に異常が発生しました
3)ネットワークによるデータ通信
サーバまたはクライアントから応答がありません.
ネットワークの状態が悪く、所定の時間内にデータを受信できません.
カスタム例外
Exceptionクラス(例外の上位クラス)を継承して、新しい例外を定義できます.
通常は作成者のみが実装されます
CH 4 Java基本API Point p = new Point(10,20);
//Class klass = p.getClass();
System.out.println(p.getClass()); //refrection
System.out.println(p.hashCode()); // address 기반의 해싱값
// address x
// reference x
System.out.println(p.toString()); //getClass() + "@" + hashCode()
System.out.println(p);
toStringコードpublic String toString() {
return "Point [x=" + x + ", y=" + y + "]";
}
結果値
class chapter04.Point
1291
Point [x=10, y=20]
Point [x=10, y=20]
.getClass():現在参照されているクラスを確認できます
.hasCode():アドレスベースのハッシュ値をチェック
同質性vs同質性
同一性比較:==
同質性比較:オブジェクト1.equals(オブジェクト2) Point p1 = new Point(10,20);
Point p2 = new Point(10,20);
Point p3 = p2;
// == : 두 객체의 동일성을 비교
System.out.println(p1 == p2);
System.out.println(p2 == p3);
// equals : 두 객체의 동질성 비교(내용비교)
// 부모 클래스 Object의 기본 구현은 동일성(==) 비교와 같다.
System.out.println(p1.equals(p2));
System.out.println(p2.equals(p3));
結果
false
true
true
true
Ch4. 1-3 String Class
特殊文字の表示と出力
C:temp出力
System.out.println("c:\temp");
「hello」出力
System.out.println("\"hello\"");
文字列関連API
String s1 = "abc";
String s2 = "def";
String s3 = s2;
s2 = s1.toUpperCase();
String s4 = s2.concat("??");
String s5 = "!".concat(s2).concat("@");
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
System.out.println(s5);
結果
abc
ABC
def
ABC??
!ABC@
StringBuffer
1.可変サイズのバッファ
2.Stringオブジェクトが一度に作成した文字列を変更できない場合とは異なり、StringBufferオブジェクトは変更できます.(文字列バッファのサイズは文字列の長さによって変化します) //String s1 = "Hello " + "World " + "Java" + 1.8; 이후에 문자열 추가못함
String s1 = new StringBuffer("Hello ")
.append("World ")
.append("Java ")
.append(1.8)
.toString();
最後に.TOString()の貼り付けに伴い、String資料型に変更されます.
Reference
この問題について(オブジェクト向けCh.3-3継承と多形性~Ch.4-4 String Buffer), 我々は、より多くの情報をここで見つけました
https://velog.io/@dhwoo8405/객체지향-Ch.3-3-상속과-다형성-Ch.4-4-String-Buffer
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
System.out.println(circle instanceof Object); // circle이 Object클래스의 인스턴스인지
System.out.println(circle instanceof Shape); //circle이 Shape클래스의 인스턴스인지
System.out.println(circle instanceof Circle);
// 오류: class는 hierachy 상위와 하위만 instanceof 연산자를 사용할 수 있다.
// System.out.println(circle instanceof Rectangle); : 오류 구문
//interface는 hierachy와 상관없이 instanceof 연산자를 사용할 수 있다.
System.out.println(circle instanceof Drawable); // circle이 Drawable 인터페이스를 구현했는지
System.out.println(circle instanceof Runnable);// circle이 Runnable 클래스의 인스턴스인지
異常処理は非常に有用である。
1)ファイル処理時
ファイルが存在しないか、他のプロセスで使用されている場合、例外が発生します.
2)I/O処理
クローズされたI/Oストリームの処理中に異常が発生しました
3)ネットワークによるデータ通信
サーバまたはクライアントから応答がありません.
ネットワークの状態が悪く、所定の時間内にデータを受信できません.
カスタム例外
Exceptionクラス(例外の上位クラス)を継承して、新しい例外を定義できます.
通常は作成者のみが実装されます
CH 4 Java基本API Point p = new Point(10,20);
//Class klass = p.getClass();
System.out.println(p.getClass()); //refrection
System.out.println(p.hashCode()); // address 기반의 해싱값
// address x
// reference x
System.out.println(p.toString()); //getClass() + "@" + hashCode()
System.out.println(p);
toStringコードpublic String toString() {
return "Point [x=" + x + ", y=" + y + "]";
}
結果値
class chapter04.Point
1291
Point [x=10, y=20]
Point [x=10, y=20]
.getClass():現在参照されているクラスを確認できます
.hasCode():アドレスベースのハッシュ値をチェック
同質性vs同質性
同一性比較:==
同質性比較:オブジェクト1.equals(オブジェクト2) Point p1 = new Point(10,20);
Point p2 = new Point(10,20);
Point p3 = p2;
// == : 두 객체의 동일성을 비교
System.out.println(p1 == p2);
System.out.println(p2 == p3);
// equals : 두 객체의 동질성 비교(내용비교)
// 부모 클래스 Object의 기본 구현은 동일성(==) 비교와 같다.
System.out.println(p1.equals(p2));
System.out.println(p2.equals(p3));
結果
false
true
true
true
Ch4. 1-3 String Class
特殊文字の表示と出力
C:temp出力
System.out.println("c:\temp");
「hello」出力
System.out.println("\"hello\"");
文字列関連API
String s1 = "abc";
String s2 = "def";
String s3 = s2;
s2 = s1.toUpperCase();
String s4 = s2.concat("??");
String s5 = "!".concat(s2).concat("@");
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
System.out.println(s5);
結果
abc
ABC
def
ABC??
!ABC@
StringBuffer
1.可変サイズのバッファ
2.Stringオブジェクトが一度に作成した文字列を変更できない場合とは異なり、StringBufferオブジェクトは変更できます.(文字列バッファのサイズは文字列の長さによって変化します) //String s1 = "Hello " + "World " + "Java" + 1.8; 이후에 문자열 추가못함
String s1 = new StringBuffer("Hello ")
.append("World ")
.append("Java ")
.append(1.8)
.toString();
最後に.TOString()の貼り付けに伴い、String資料型に変更されます.
Reference
この問題について(オブジェクト向けCh.3-3継承と多形性~Ch.4-4 String Buffer), 我々は、より多くの情報をここで見つけました
https://velog.io/@dhwoo8405/객체지향-Ch.3-3-상속과-다형성-Ch.4-4-String-Buffer
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Point p = new Point(10,20);
//Class klass = p.getClass();
System.out.println(p.getClass()); //refrection
System.out.println(p.hashCode()); // address 기반의 해싱값
// address x
// reference x
System.out.println(p.toString()); //getClass() + "@" + hashCode()
System.out.println(p);
public String toString() {
return "Point [x=" + x + ", y=" + y + "]";
}
Point p1 = new Point(10,20);
Point p2 = new Point(10,20);
Point p3 = p2;
// == : 두 객체의 동일성을 비교
System.out.println(p1 == p2);
System.out.println(p2 == p3);
// equals : 두 객체의 동질성 비교(내용비교)
// 부모 클래스 Object의 기본 구현은 동일성(==) 비교와 같다.
System.out.println(p1.equals(p2));
System.out.println(p2.equals(p3));
String s1 = "abc";
String s2 = "def";
String s3 = s2;
s2 = s1.toUpperCase();
String s4 = s2.concat("??");
String s5 = "!".concat(s2).concat("@");
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
System.out.println(s5);
結果abc
ABC
def
ABC??
!ABC@
StringBuffer
1.可変サイズのバッファ
2.Stringオブジェクトが一度に作成した文字列を変更できない場合とは異なり、StringBufferオブジェクトは変更できます.(文字列バッファのサイズは文字列の長さによって変化します)
//String s1 = "Hello " + "World " + "Java" + 1.8; 이후에 문자열 추가못함
String s1 = new StringBuffer("Hello ")
.append("World ")
.append("Java ")
.append(1.8)
.toString();
最後に.TOString()の貼り付けに伴い、String資料型に変更されます.Reference
この問題について(オブジェクト向けCh.3-3継承と多形性~Ch.4-4 String Buffer), 我々は、より多くの情報をここで見つけました https://velog.io/@dhwoo8405/객체지향-Ch.3-3-상속과-다형성-Ch.4-4-String-Bufferテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol