내일배움캠프 27일차 TIL

minjae·2021년 10월 26일
0

개발일지 시작의

알고리즘 마지막날!!💪💪

개발 업무내용

자바 문법 강의 듣기, 알고리즘 4주차 마무리

오늘의 이슈/고민..그리고 해결한 내용

  1. java class
  • 객체의 속성을 정의해 놓은 것
  • 클래스 내부의 정보를 멤버 변수
  1. 인스턴스
  • 어떠한 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 함
  • "인스턴스 이름.멤버변수"의 형식으로 접근
  1. 메소드
  • 어떠한 작업을 수행하는 코드를 하나로 묶어 놓은 것
  • 필요한 이유
    1. 재사용성 : 만들고나면 반복적으로 재사용 가능 및 다른 프로그램에서도 사용 가능
    2. 중복된 코드 제거 : 같은 코드가 여러번 반복되는 경우 메소드를 활용하여 중복을 없애 보다 효율적으로 코드를 짤 수 있음
    3. 프로그램 구조화 : 긴 코드를 작성할 때 보다 쉽게 수정 및 관리 가능
    • 메소드 선언 시 지켜야 하는 기본 약속
      1. 동사로 시작해야 한다
      2. camel case로 작성(첫 단어는 소문자, 그 이후는 대문자로 시작, 중간에 띄어쓰기 밑 특수문자 x)
  • 메소드는 다음의 형식으로 정의 가능
반환타입 메소드이름 (타입 변수명,타입 변수명, ...){ 
    수행되어야 할 코드
}

int add(int x, int y) {
    int result = x + y;
    return result;
}
  • 반환 타입은 반환되는 변수와 일치해야 함
  • 메소드 내의 변수는 지역변수로 메소드 내부에서만 사용할 수 있음, 서로 다른 메소드에서 같은 이름의 지역변수를 선언해 사용 가능함
  1. 생성자
  • 초기화 메소드의 일종으로 new할때만
  • class 이름과 동일하게 지어야하고 return 값은 없음
  • 생성자를 만들지 않으면 자바 컴파일러가 자동으로 매개변수와 내용이 없는 생성자를 만듦
  • 각 자료형마다 기본값이 달라 필요하다면 미리 선언하거나 생성자로 초기화 해주기 -> reference의 경우(string) 기본으로 할당되는 값이 없어 null로 나옴
  1. 상속
  • 기존의 클래스를 재사용하는 방식 중의 하나
  • 변경사항만 작성하기 때문에 상대적으로 적은 양의 코드를 작성할 수 있음 => 코드와 클래스가 많아질수록 관리가 용이함
  • 상속을 통해 클래스간의 계층 구조가 만들어짐, 단, 오직 하나의 클래스만 상속받을 수 있음

    상속의 특징

    1. 부모 클래스에서 정의된 필드와 메소드를 물려 받음
    2. 새로운 필드와 메소드를 추가할 수 있음
    3. 부모 클래스에서 물려받은 메소드를 수정할 수 있음

오버로딩 vs 오버라이딩
오버로딩이란 한 클래스 내에 이름은 동일하지만 매개변수의 개수 혹은 타입이 다른 메소드를 여러개 정의하는 것 => 기존에 없는 새로운 메소드 정의
오버라이딩이란 부모 클래스의 메소드와 이름, 매개변수, 반환타입이 같고 상속받는 메소드를 그대로 사용하거나 필요에 의해 변경해서 쓰는 경우 => 상속받은 메소드의 내용을 변경

  1. 접근 제어자
  • 멤버 변수/함수 혹은 클래스에서 사용되며 외부에서의 접근을 제한하는 역할
  • private : 동일 클래스내에서만 접근 가능
  • defalut(nothing) : 동일 패키지 내에서만 접근 가능
  • protected : 동일 패키지 내에서, 다른 패키지의 자손클래스에서 접근 가능
  • public : 접근 제한 없음

    💡 Java 에서 정확한 클래스의 이름은, package 이름까지 포함한 것이 자바 시스템이 인식하는 클래스의 이름입니다. pkg.ModifierTest 클래스와 pkg2.ModifierTest 는 소스코드에서 보이는 클래스의 이름은 같지만 실제로는 다른 클래스 입니다. 다른 클래스를 import 할 때, package 이름까지 정확히 확인해야하는 이유가 여기에 있습니다. 앞의 예제에서 Scanner를 alt+Enter를 통해서 import 할때 IDE가 추천해주는 선택지가 많았는데, 자세히 확인해보면 모두 패키지 이름은 다른 것을 보실 수 있습니다

  • 그렇다면 왜 접근 제어자를 사용하지?
    • 객체지향 프로그래밍이란 객체들 간의 상호작용을 코드로 표현하는 것입니다.
    • 이때 객체들간의 관계에 따라서 접근 할 수 있는 것과 아닌 것, 권한을 구분할 필요가 생깁니다.
    • 클래스 내부에 선언된 데이터의 부적절한 사용으로부터 보호하기 위해서!
    • 이런 것을 캡슐화(encapsulation)라고 합니다.
    • 접근 제어자는 캡슐화가 가능할 수 있도록 돕는 도구입니다.
  1. 추상클래스
    • 추상 메소드(설계만 되어 있고 구현체는 없는 것 => 자식 클래스에서 구현해야함)를 선언할 수 있는 클래스 => 상속받는 클래스마다 반드시 동작이 달라지는 경우
  1. 인터페이스
    • 객체의 특정 행동의 특징을 정의하는 간단한 문법
인터페이스추상클래스
다중 상속 가능다중 상속 불가능
implements를 이용해 구현extends를 이용하여 구현
메소드 시그니처에 대한 선언만 가능추상메소드에 대한 구현 가능
구현하려는 객체의 동작 명세클래스를 상속받아 이용 및 확장

To-do List

서버리스 강의 듣고 복습 MW 참여

0개의 댓글

관련 채용 정보