본문 바로가기

컴퓨터공학/Java

Java 새롭게 알게 된 내용 정리

protected 몰랐던 것은

다른 패키지에서 부모클래스를 상속받을 때 자식 클래스에서 부모 클래스 변수를 사용할 수 있었던 것

하지만 부모 클래스 변수를 다른 패키지에서 사용하려고 하면 사용 불가

원래 알고 있었던 것은

public 은 어디서든 사용 가능

private은 클래스 안에서만 사용 가능하고 다른 곳에서는 사용 불가 상속해도 안됨

super 예약어는 오버라이딩 시 부모클래스를 다룰 때 사용한다.

클래스 내에서 사용되는 변수를 필드라고 부른다.

정적 변수를 설정하면 클래스 객체에 따로 생성되어 저장되는 게 아니고 메모리에 따로 저장되어 공유한다.

final 변수는 변수를 고정시킬 때 사용

final 클래스는 상속을 금지시킨다.

인터페이스는 이벤트핸들러 사용시에도 사용된다.

인터페이스 상수필드

인터페이스에서 객체는 선언할 수 없지만 상수필드는 선언 가능

생성과 동시에 초기화를 해줘야 한다. 안 그러면 에러 발생

상수필드 기본 옵션은 public static이다. 명시하지 않아도 컴파일러가 알아서 public static을 붙여준다.

다른 접근 제한자 private나 protected를 사용하면 에러 발생

try, catch, finally

throws 는 메소드에서 예외가 발생할 때 던져서 알려준다. try문 안에 메소드를 넣고 catch문에서 받는다.

throw는 예외를 일부러 만들어 낼 때 사용한다.

primitive type/ reference type

프리미티브 타입은 직접 데이터를 담는 타입이다.

프리미티브 타입은 정수, 부동소수점, 불리언 등이 있다.

레퍼런스 타입은 다른 것을 참조하기 위한 주소값이 들어간다.

레퍼런스 타입은 클래스, 인터페이스, 배열, 열거 등이 있다.

null 값은 주소값이 없다는 뜻이다.

참조되는 변수가 어떤 클래스를 참조할 때 참조되는 클래스의 크기가 같거나 커야한다.

따라서 자식 클래스 자료형을 가진 변수가 부모 클래스를 참조할 수 없고

부모 클래스 자료형을 가진 변수가 자식 클래스를 참조할 수 있다.

왜냐하면 자식 클래스는 부모 클래스가 가진 데이터 양보다 클 수 밖에 없다.

자식 클래스에서 새로운 메서드나 필드를 선언하면 공간이 더 필요하기 때문에

부모 변수가 자식 클래스에서 오버라이딩 된 함수를 호출할 경우 오버라이딩된 함수를 호출한다.

왜냐하면 참조형식 함수보다 객체형식 함수 호출을 우선하기 때문이다.

상위 클래스를 변수로 두는 이유

print 메소드 원형을 보면 매개변수 자료형이 Object이다

Object는 모든 데이터자료형의 부모격인 자료형인 최상위 클래스이다.

우리는 print 메소드를 사용할 때 두 번째 매개변수에 int나 double String을 사용한다.

매개변수에서 복잡한 자료형을 요구할 때 공통 부모인 클래스를 매개변수로 둔다.

상위 클래스 변수에 하위 클래스 객체를 담으면 상위 클래스 기능밖에 사용을 못한다.

메인스레드 프로그램을 실행하기 위한 시스템 스레드

워킹스레드 사용자가 생성하고 제어하는 스레드

메인스레드에서 워킹스레드를 생성하지만 메인스레드가 종료되어도 워킹 스레드는 계속 작동

메인스레드 종료할 때 워킹스레드도 종료해야한다.

제네릭 클래스는 어떤 타입이라도 받아서 그 타입을 적용하는 클래스이다.

어떤 클래스에 이러한 데이터 타입을 넣겠다라는 것을 표시한 거임

스트림이란 입력장치에서 스트림형태 데이터를 받고 출력장치에 스트림형태 데이터로 넘겨준다.