Javaクラスとオブジェクト


1.オブジェクト(Object)


:対象は現実世界に存在するすべてのものであってもよい.
  • 例)朝起きて、バスで学校に通うようにプログラミングしたとします.
  • 「学生」「朝食」「バス」「学校」などのオブジェクト定義
  • オブジェクト間で発生したことを実現
    = 객체지향 프로그래밍 (OOP, Object Oriented Programming)
  • 2.クラス(Class)


    オブジェクトのプロパティと機能をコードで実現します.
    オブジェクトを作成するフレームワーク(Framework for Object)とみなすことができます.

    1)クラス定義


    例)自動車クラスの作成
  • 🚗 カー
  • 属性:名称、メーカー、年会費、価格など
    =>변수
  • と定義する.
  • 機能:出発、停止など
    =>메서드
  • と定義する.
    class Car{
        // 속성(필드) : 멤버 변수(member variable)
        String name;
        String maker;
        int year;
        double price;
    
        // 기능 : 메서드(method)
        void start() {
            System.out.println("출발");
        }
        void stop() {
            System.out.println("멈춤");
        }
        

    (1)メンバー変数


    :クラスで宣言されたオブジェクトのプロパティを表す変数

    (2)方法


    :クラスでメンバー変数を使用してクラスを実装する機能

  • メソッドの定義
    : 반환형 메소드이름 (매개변수) { }

  • return値がない方法では、voidが返されます.
  • (3)ローカル変数


    :メソッドの内部{}/メソッドのパラメータ()/コンストラクション関数のパラメータとして()内部で宣言された変数
  • メソッドまたはジェネレータを呼び出す場合💎スタックメモリ💎で作成し、メソッドの終了時にメモリから
  • を削除します.

    2)クラスによるオブジェクトの作成


    (1)例


    実際に使用可能なクラス.
    クラスを使用して作成されたオブジェクト=インスタンス
  • オブジェクト生成構文:자료형(클래스형) 변수이름 = new 생성자 ;
  • オブジェクト=メモリ(💎バックメモリ💎) スペースを割り当てる.
  • 生成例
  • を指す変数=参照変数
  • public class Student {  // 클래스 정의
    	// 멤버변수
    	int studentID;
    	String studentName;
    	int grade;
    	String address;
    	
    	// 메서드
    	public String getStudentName() {
    		return studentName;
    	}
    	public void setStudentName(String name) {
    		studentName = name;
    	}
        
       	// main함수 : Java Virtual Machine이 프로그램을 시작하기 위해 호출하는 함수.
        	// 클래스 내부에 만들긴 하지만 클래스의 메서드는 아님
    	public static void main(String[] args) {
    		
            	// 객체 생성
            	Student student1 = new Student();
    		Student student2 = new Student();
    		
            	// 클래스를 참조하는 참조변수를 통해 멤버변수와 메서드 호출
    		student1.studentName = "김철수";
    		student2.studentName = "홍길동";		
    		System.out.println(student1.getStudentName());  // 김철수 출력
    	}
    
    }
    

    3)コンストラクタ


    オブジェクトを作成するときに使用される関数です.

    (1)デフォルトコンストラクタ

  • ジェネレータ名はクラス名と同じです.
  • 返却タイプはありません.(戻りタイプがvoidとは異なる)
  • クラスを定義するときにジェネレータが明示的に作成されていない場合、javaはコンパイル時にデフォルトジェネレータを独自に作成します.
  • (2)直接実施ジェネレータ

  • は、必要に応じてジェネレータを直接実装することができる
    椺主にメンバー変数の値をパラメータとし、オブジェクト(インスタンス)の作成時にメンバー変数の値の反転を初期化する
  • ダイレクトジェネレータが実装されている場合、基本ジェネレータは自動的に作成されません.
  • (3)ロードコンストラクタリロード(コンストラクタリロード)

  • クラスには少なくとも2つのジェネレータ
  • がある.
    必要に応じてジェネレータ
  • を選択し、
  • を用いる.
    public class Student {
    	// 멤버변수
    	int studentID;
    	String studentName;
    	int grade;
    	String address;
    	
    	// 기본 생성자
    	Student(){};
    	
    	// 직접 구현한 생성자 (멤버변수 studentID의 값을 초기화)
    	Student(int id){
    		studentID = id;
    	}
    	
    	// 메서드
    	public String getStudentName() {
    		return studentName;
    	}
    	public void setStudentName(String name) {
    		studentName = name;
    	}
    	
    	
    	
    	public static void main(String[] args) {
        		// 클래스 생성 - 기본생성자 사용
    		Student student1 = new Student(); 
            
           		// 클래스 생성 - 직접 구현한 생성자 사용
    		Student student2 = new Student(123);				
    			
    		System.out.println(student2.studentID);  // 123 호출
    	}
    
    }
    
    ジェネレータのオーバーロードの概念を理解する
    💡 メソッドオーバーロード
  • 同じクラスに複数の方法
  • がある.
  • メソッドの名前は同じ(戻りタイプ/アクセス制限なし)
  • です.
  • メソッドパラメータの数とタイプが異なる(数とタイプが同じではない)
  • public class Test {
        static void testMethod(int i) {
            System.out.println("int call");
        }
        static void testMethod(float f) {
            System.out.println("float call");
        }public static void main(String[] args) {
            int a = 1;
            float b = 1.1;testMethod(a);  // "int call"  
            testMethod(b); // "float call"        
        } 
  • パラメータに従って必要な方法を選択するには、
  • を用いることができる.

    3.参考資料型

  • 変数のタイプ
  • 基本資料型(前の位置を参照)2
  • 参考資料型
    :クラスをデータソース(クラスの変数を参照)
  • 以前に作成した学生クラスに変数「受講科目」を追加したいです.
    各科目の属性を変数として追加すると効率が低下し,Subject형 변수を宣言するSubjectというクラスが作成される.
    // Subject 클래스 만들기
    public class Subject {
    	String subjectName;
        	int subjectScore;        
    }
    public class Student {
    	
    	int studentID;
    	String studentName;	
    	// Subject형 변수 선언
    	Subject subject;
    	
    	void setSubject(String name, int score) {
    		this.subject = new Subject(); // Subject 객체를 생성해야 사용할 수 있음
    		subject.subjectName = name;
    		subject.subjectScore = score;				
    	}
    	
    	
    	
    	public static void main(String[] args) {
    		Student student1 = new Student();        
    		student1.setSubject("math", 90);
    						
    		System.out.println(student1.subject.subjectName);  // math 출력
    	}
    
    }
  • 参照型変数は、新しいクラスを作成して使用することも、JDKが提供するクラスを使用することもできます.
  • 例)Stringはjavaである.ラングセットの中のランクです
  • 基本変数は、メモリに作成されると、実際の値(文字)が格納されます.
  • 参照型変数は、メモリ作成時に参照されるクラスのアドレス値を格納します.