백기선님 자바스터디 5주차 : Class 1) 학습

bongf·2021년 8월 12일
0

Java강의

목록 보기
7/18

학습 1) 클래스 정의하는 방법

class 클래스 이름 {
}
class 클래스 이름 extends SUPERCLASS implements INTERFACE{
}
  • 클래스 정의할 때 가지는 속성들
    • 1) 접근제어자
    • 2) 클래스이름
    • 3) (없을 수도 있다) superclass : 부모 클래스
    • 4) (없을 수도 있다) interface
    • 5) 클래스의 바디 { } 안
      • 생성자
      • 멤버변수(필드)
      • 메소드

학습 2) 객체 만드는 방법 (new 키워드 이해하기)

  • 클래스의 객체가 만들어진 것을 인스턴스를 만들었다고 한다.
    • 변수만 선언한 것은 인스턴스를 생성한 것이 아니다.
    public class Practice {
    	public static void main(String[] args) throws ClassNotFoundException {
        	MadeClass mc;
    	}
    }
    • 이렇게 되면 변수만 선언한 것.
    • 인스턴스를 생성하기 위해서는 new를 사용해야 한다
      • new뒤에는 클래스의 생성자 메서드가 온다
    MadeClass mc = new MadeClass(); 
    • new는 객체를 생성하고(힙에) 객체 주소를 반환한다.
    • 참조변수에는 이 객체 주소가 저장된다.
    • 이 참조변수를 가지고 객체에 접근할 수 있다.
    • 참조변수와 연결이 끊긴 객체는 gc가 정리한다.
    • 생성한 객체를 변수에 반드시 저장할 필요는 없다. 속성 값을 바로 도출할 수 있다.
    int height = new Rectangle().height;

학습 3) 메소드 정의하는 방법

public double calculateAnswer(double wingSpan, int numberOfEngines,
                              double length, double grossTons) {
    //do the calculation here
}

구성요소

  • 1) 접근제어자
  • 2) return 타입
  • 3) 메소드이름
  • 4) 파라미터 리스트(() 안에)
  • 5) (예외던질경우) 던질 예외 리스트
  • 6) 메소드 바디 ({} 안에)
  • 필수요소는 메서드의 리턴타입, 이름, {}, () (부호 그 자체)

메소드 오버로딩

  • 한 클래스 내에 동일한 명의 메소드가 있을 수 있다.
public class DataArtist {
    ...
    public void draw(String s) {
        ...
    }
    public void draw(int i) {
        ...
    }
    public void draw(double f) {
        ...
    }
    public void draw(int i, double f) {
        ...
    }
}
  • parmeter 리스트가 달라야 한다.

학습 4) 생성자 정의하는 방법

  • 생성자 : 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
    • 생성자 이름은 클래스의 이름과 같다
    • 생성자는 반환값이 없다
    • 생성자는 인스턴스를 초기화 할 때 필요한 작업들을 정리해 주는 것이고 위에서 했든 인스턴스를 만드는 것은 new 키워드
  • 클래스 Bicycle의 생성자
public Bicycle(int startCadence, int startSpeed, int startGear) {
    gear = startGear;
    cadence = startCadence;
    speed = startSpeed;
}
  • 해당 생성자의 사용 예시
Bicycle myBike = new Bicycle(30, 0, 8);
  • 클래스에 생성자를 작성하지 않을 수도 있다.
    • 컴파일러가 자동으로 생성. 인자가 없는 default 생성자 생성
    • 이 기본 생성자는 superclass의 인자가 없는 생성자를 호출한다.
  • 생성자를 private으로 선언하고 팩토리메서드를 둬서 객체를 생성했던 기억이 난다.

학습 5) this 키워드 이해하기

  • 현재 객체 내에서 메소드나 생성자에서 해당 객체를 호출하기 위해 사용한다.
  • static에서는 사용할 수 없다.
  • 필드 호출할 때
public class Point {
    public int x = 0;
    public int y = 0;
        
    //constructor
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}
  • 동일 클래스 내에 다른 생성자를 호출할 때
public class Rectangle {
    private int x, y;
    private int width, height;
        
    public Rectangle() {
        this(0, 0, 1, 1);
    }
    public Rectangle(int width, int height) {
        this(0, 0, width, height);
    }
    public Rectangle(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }
    ...
}

출처

profile
spring, java학습

0개의 댓글