Java practice_240110

Choi Suyeon·2024년 1월 10일
0
  1. 대상선정
    사람

  2. 객체모델링
    명사적: 눈, 코, 입....등
    동사적: 먹다, 입다, 자다...등

  3. 클래스 작성
    클래스를 작성하고, 클래스 간의 관계를 설정

  4. 객체 생성
    Person p=new Person();

  5. 객체 사용
    p.eat();


Polymorphism(다형성)

: 객체 다형성, method 다형성 두가지를 제공
method 다형성에는 Overload(Overloading), Override(Overriding)가 있다.

method overload

== method overloading

  • 하나의 클래스 안에서 같은 이름의 method를 여러 개 정의해야 할 때 사용.
    하나의 클래스 안에서 같은 이름의 method를 하나만 정의할 수 있다.
    장점 : 편의성

문법

  • 규칙
    어떤 method를 호출하는 가?를 알 수 있도록 만들어야 한다. => parameter관련

접근지정자는 달라도 되고, 반환형 달라도 된다.(근데 거의 같게 한다.)
method명은 같아야한다.
매개변수는 반드시 달라야 한다.

  • Overloading 잘된 method 예시
  • 연습
public class TestOverloading {

	//별 하나 출력
	public void printStar() {
		System.out.print("★");
	}//printStar
	
	//입력되는 수만큼 별을 옆으로 출력
	public void printStar(int cnt) {//매개변수 다름.
		for (int i = 0; i < cnt; i++) {
			System.out.print("☆");
		}//end for
	}//printStar
	
	public static void main(String[] args) {

		TestOverloading staring = new TestOverloading();
        
		staring.printStar();//overload된 method 호출
		staring.printStar(10);
        
	}//main

}//class
  • 결과
★☆☆☆☆☆☆☆☆☆☆

Constructor(생성자)

  • 객체가 생성될 때 기본적으로 가지고 있어야 할 값이나, 실행되어야 할 코드를 정의하는 method의 일종.

  • 직접 호출되지 않는다.(new에 의해서만 호출.) 상속되지 않는다.

    //생성자 호출
    new TestConstructor(); //기본
    TestConstructor tc = new TestConstructor(); //가능은 하나 tc변수 사용안됨.
    _
    public static void main(String[] args) {
    TestConstructor tc = new TestConstructor(); //가능
    new TestConstructor(); //가능
    }//main

  • 클래스의 이름과 동일하게 만들어지고(대문자로 시작함.), 반환형이 없다.
    thissuper를 사용하여 클래스 내의 다른 생성자를 호출할 수 있다.
    생성자는 Overload(이름은 같지만 매개변수가 다른 거)가 된다.(객체 생성을 다양하게 할 수 있다.)

  • 개발자가 생성자를 하나도 정의하지 않으면 compiler가 매개변수가 없는 기본 생성자(default constructor)를 생성해준다. 개발자 생성자를 하나라도 정의하면 compiler는 기본 생성자를 생성하지 않는다.

문법

접근지정자 클래스명(매개변수,,,) {
//객체가 생성될 때 가지고 있어야 할 기본 값 설정\
//객체가 생성될 때 실행되어야 할 코드 정의
}

  • 접근지정자
    public : 클래스 외부에서 객체 생성 가능
    protected : 같은 패키지의 다른 클래스에서 객체 생성 가능.
    패키지가 다르면 상속관계의 자식 클래스에서만 객체 생성 가능.
    default : 같은 패키지의 다른 클래스에서 객체 생성 가능.
    패키지가 다르면 객체 생성 불가능.
    private : 클래스 안에서만 객체를 생성할 때.(Singleton Pattern을 사용할 때.)

  • 개발자가 생성자를 하나도 정의하지 않으면 클래스의 접근지정자와 동일한 접근지정자가 붙어있는 생성자가 생성된다.(Default Constructor)


  • Overloading을 사용으로 편의성 상승.

JVM의 memory

(java virtual machine)

  • method 영역 : 실행되는 코드 적재, static변수가 저장, 가장 먼저 실행.
  • stack 영역 : 지역변수가 저장되는 영역.
  • heap 영역 : instance 변수가 저장. new로만 사용가능.(객체화 해야함.)

call by value

  • 값 복사
    method의 매개변수가 기본형을 가지면, 값은 복사되어 전달된다.

0개의 댓글