10월 22일

서지희·2021년 10월 22일

객체지향형 언어

- 클래스, 인스턴스, 메소드

class Q {
	int add (int x, int y) {
    	return x + y; }
        
public class Main {
    public static void main(String[] args) {
		Q q=new Q();	//인스턴스선언
        int plus = q.add(x:1, y:2);
        
		System.out.println(plus);
    }
}

class Q : 붕어빵 틀
인스턴스 : 붕어빵

- 생성자

인스턴스를 생성할 때 new를 할 때만 불리는 친구. return 값이 없음!

class Phone {
    String model;
    String color;
    int price;
    
    command + N = constructor
    
}

public class Main {
    public static void main(String[] args) {
        Phone galaxy = new Phone(constructor 값 넣어주기);

        Phone iphone =new Phone(constructor 값 넣어주기);

        System.out.println("철수는 이번에 " + galaxy.model + galaxy.color + " + 색상을 " + galaxy.price + "만원에 샀다.");
        System.out.println("영희는 이번에 " + iphone.model + iphone.color + " + 색상을 " + iphone.price + "만원에 샀다.");
    }
}

생성자를 쓰지 않는다면 기본값을 출력.

- 상속

기존의 클래스를 재사용하는 방식. 클래스간의 계층구조를 만들게 됨
!여러클래스 상속 불가 오직 한개의 클래스만 상속 가능!
#특징
1. 부모 클레스 에서 정의된 필드와 메소드를 물려 받는다.
2. 새로운 필드와 메소드를 추가할 수 있다.
3. 부모 클래스 에서 물려받은 메소드를 수정할 수 있다.

  • overloading
    이름은 같고 매개변수의 개수가 다르면 됨. (개수가 같으면 에러)
    개수가 같지만 타입이 다르면 됨
  • overriding
    부모의 class로부터 상속받은 methodf를 똑같이 자식class에 정의 (덮어쓰기)

- 접근제어자

private : 같은 클래스 내에서만 접근 가능
default(nothing) : 같은 패키지 내에서만 접근 가능
protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근 가능
public : 접근 제한이 없음

- 추상클래스, 인터페이스

추상클래스 : 설계만 돼 있고 구현은 안 돼 있는것.
1. 클래스를 상속받아 이용 및 확장을 위함
2. 다중 상속 불가능 , 단일 상속
3. extends를 이용하여 구현
4. 추상메소드에 대한 구현 가능

인터페이스 : 객체의 특정 행동의 특징을 정의({}반드시 작성)
1. 구현하려는 객체의 동작의 명세
2. 다중 상속 가능
3. implements를 이용하여 구현
4. 메소드 시그니처(이름, 파라미터, 리턴 타입)에 대한 선언만 가능

- 예외, 에러처리

Error : 심각한 에러
Exception : 종료되지 않지만 예외나 문제상황을 표현
try-catch-finally
try-with-resource (자동적으로 close() 호출)

- 날짜와 시간 다루기

//현재
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
//지정
LocalDate newDate = LocalDate.of(2021, 03, 29);
LocalTime newTime = LocalTime.of(22, 50, 55);
//오전,오후
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);

//오늘의 날짜 시간 출력(많이 쓰일 것 같으니 박제,,)
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd h/mm");
        String now = dateTimeFormatter.format(LocalDateTime.now());
        System.out.println("현재시간: " + now);
    }
}
profile
공부중,,

0개의 댓글