JAVA 5

상속, 오버라이딩, I/O, 생성자, 예외처리 등 복습한거

1. 생성자 /초기화 관련: 객체 생성이 잘 안된다면 해당 클래스에 가서 생성자를 잘 살펴보자. 생성자의 특징으로는 메서드와 형태가 비슷하지만 클래스명과 이름이 동일하고 리턴타입이 없다는 특징. public같은 접근 제한자만 앞에 붙을수있다! 상속받은 클래스라도 생성자를 상속받지는 않는다. 사용자 정의 생성자가 있다면 더이상 기본 생성자가 만들어지지 않으므로, 매개변수가 있는 생성자와 없는 생성자를 둘다 만드려면 둘다 따로 정의해주어야 한다. 2. 오버라이딩 관련: 조상 클래스에서의 메서드와 메서드명, 매개변수 개수/타입/순서, 리턴타입이 같은지?? 접근제한자가 부모 타입에서와 같거나 더 넓은지? 부모보다 더 넓은 범위의 예외를 던지고있진 않은지? 이것들 잘 살피기. 부모 메서드 호출하려면 super.키..

JAVA 2023.08.07

[JAVA] 추상, 인터페이스

(제대로 이해했나 스스로 예제 만들어보기) (추상클래스와 인터페이스 차이 있다. 혼동하기 말기) 추상 클래스 : 클래스들의 공통요소들을 뽑아 상속구조로 이용. abstract, extends 키워드 사용 공통 요소들을 조상 클래스로 주고 이를 각각 상속받아 사용하는 식.(상속받는 메서드들은 메서드 오버라이딩으로 재정의) 구현 클래스들은 상속받을 이 abstract 메서드들을 다 재정의해야할 의무가 있고, 어차피 오버라이딩해서 사용할거니까 조상 클래스의 메소드 내 구현부는 의미가 없어짐. -> 구현부는 세미콜론으로만 남겨버림 추상 클래스는 객체 생성이 불가(직접 사용할 일이 없으므로) 하나, 자식타입을 참조하여 객체 생성하는건 맞음 스스로 객체 생성해 사용하는게 아닌 자식 클래스를 생성해 사용한다 추상 메..

JAVA 2023.07.21

[JAVA] OOP - Encapsulation(작성중)

Encapsulation: 데이터 은닉과 보호 위함. - 정보 보호를 위해 멤버변수는 private로 보호하고, 공개되는 메서드인 getter 등을 통해 접근하도록 한다. 객체 생성 제어와 Singleton 패턴: - 객체 생성을 제한해야 할 경우: 여러개의 객체가 굳이 필요없을때. 수정가능한 멤버변수가 없고 기능만 있는 클래스일때 (==stateless한 객체) 이런경우 계속 여러개를 생성하기보다는 하나 생성해서 재사용하는게 좋기 때문! - Singleton이란: 생성자의 접근제한자를 private로 설정하고 내부에서만 직접 객체를 생성. 외부에서 private member에 접근가능한 getter가 필요하다 (setter는 필요할일 x) 객체 생성없이 외부에서 접근을 가능하게 하기 위해 getter(..

JAVA 2023.07.20

0719 자바 Inheritance, Constructor

생성자(Constructor): 클래스명과 이름 동일, 반환타입이 없음. 특징: 클래스 내에서 명시적인 생성자를 만들지 않는다면 디폴트 생성자가 컴파일러에 의해 기본으로 생성된다. OOP- 2. Inheritance : 기존 상위 클래스의 자산 (멤버) 를 자식 (예) 클래스에서 재사용하기 위함. (생성자 & 초기화 블록은 상속 x) ⇒ 코드 절감, 유지보수 위함. 키워드: extends * Object 클래스: 모든 클래스의 조상 클래스 (최상위 클래스) 별도 extends 선언 없으면 자동으로 extends Object 생략된 것. → 모든 클래스엔 Object 클래스에 정의된 메서드가 있음!! : 자바는 단일상속만 지원한다. (다중상속 ×) → 대신 interface 와 포함관계 (has a) 로 ..

JAVA 2023.07.19

[JAVA] BufferedReader/BufferedWriter 사용하기

여태껏 System.out.print();가 익숙해서 이것만 써왔는데 속도 측면에서 BufferedReader/BufferedWriter가 훨씬 성능이 좋기 때문에 이제 이를 이용하여 문제를 풀어보려 한다. 다른 사람들이 자바로 백준 문제 푼걸 보면 대부분 이걸 사용해서 풀고 있음을 볼 수 있다.. Scanner -> BufferedReader System.out.println(); -> BufferedWriter 이들의 특징은 enter만을 구분하며, 받은 데이터가 String으로 고정되기 때문에 입력받은 데이터를 추가적으로 가공할 필요가 있다. 예를들어 입력값에 숫자가 들어간다면 parseInt를 통해 int형으로 변환해줄 필요가 있다. 이들을 사용하기 위해서는 먼저 다음과 같은 클래스들을 impor..

JAVA 2022.07.18