본문 바로가기
✨ 서울대생이 면접 떨어지고 6개월간 삽질하며 정리한 'CS 정리 노트', 지금 무료로 풀립니다!

Programming Language56

[자바] 상속에 대하여 - (2) 오버라이딩, 가상 메서드 상속에서 중요한 것 중에 클래스 간의 형 변환이 있다. 이전 예시인 Customer와 VIPCustomer 관계를 생각해볼 때 하위 클래스인 VIPCustomer는 상위 클래스인 Customer보다 더 많은 기능을 갖고 있음 상속받은 클래스는 상위 클래스 기능을 모두 사용 + 본인의 기능 사용이기 때문이다. 따라서 VIPCustomer는 VIPCustomer형인 동시에 Customer형이라고 할 수 있다. 그래서 다음과 같이 형변환이 가능해짐 Customer customerKim = new VIPCustomer(2020, "김유신", 111); 이때 이 customerKim은 정체가 뭘까? VIPCustmer 생성자가 호출되므로 VIPCustomer의 변수, 메서드가 메모리에 생성됨. 그런데 클래서 자료.. 2021. 10. 23.
[자바] 상속에 대하여 - (1) 상속의 기능과 구현, super의 뜻 - 상속이란 상속: 물려주다 A 클래스가 B 클래스에게 상속한다 = B 클래스가 A 클래스를 상속받는다 이때 A 클래스가 상위 클래스, B 클래스가 하위 클래스가 된다. - 구현 상속은 extends 예약어를 통해 구현한다. class B extends A { } - 상속의 기능 상위 클래스에서 작성한 변수나 메서드를 사용할 수 있다. 이때 상위 클래스의 변수나 메서드 중 외부 클래스에서는 사용할 수 없지만 하위 클래스에서는 사용할 수 있도록 지정하는 것이 protected 예약어 - 하위 클래스가 상위 클래스의 변수나 메서드를 사용할 수 있는 이유 하위 클래스가 생성 될때 상위 클래스의 생성자가 먼저 호출되고 그 다음에 하위 클래스의 생성자가 호출되기 때문. 즉, 상위 클래스의 변수가 메모리에 먼저 생.. 2021. 10. 23.
[자바] static을 활용한 싱글톤 패턴 싱글톤 패턴 인스턴스를 단 하나만 생성하는 디자인 패턴 상황 예시 회사의 직원들을 객체 지향 프로그램으로 구현하는 상황 - 이때 직원들의 인스턴스는 당연히 여러 개일 수 있지만, - 회사의 인스턴스는 단 하나로 존재해야 함 구현 방법 1. 생성자를 private로 만들기 클래스 정의시 생성자를 정의해주지 않으면 디폴트 생성자가 자동으로 만들어지는데 디폴트 생성자는 public임. 따라서 디폴트 생성자가 생성되지 않도록 생성자를 반드시 명시해주어야 함 이때 private로 선언하여 클래스 외부에서 마음대로 Company 인스턴스를 생성할 수 없게 함 package first_project; public class Company { private Company() {} } 2. 클래스 내부에 static으로.. 2021. 10. 23.
[자바] 정적 변수 static static 변수 다른 멤버 변수처럼 클래스 내부에 사용한다. 클래스 변수라고도 부름 사용법은 자료형 앞에 static 예약어를 붙여주면 된다. ex) static int serialNum; 특징 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴스 생성 시마다 새로 생성되지 않는다. static 변수는 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리 공간이 할당됨 모든 인스턴스가 하나의 static 변수를 공유한다. 사용 예제 서로 다른 학생 인스턴스에게 다른 학번 부여 package first_project; public class Student { public static int serialNum = 1000; public int studentId; public String studen.. 2021. 10. 22.
[자바] 정보 은닉 접근 제어자 설명 public 외부 클래스 어디에서나 접근 protected 같은 패키지 내부와 상속 관계의 클래스에서만 접근할 수 있고 그 외 클래스에서는 접근 불가 아무것도 없는 경우 default이며 같은 패키지 내부에서만 접근 가능 private 같은 클래스 내부에서만 접근 정보 은닉 클래스 내부에서 사용할 변수나 메서드를 private로 선언해서 외부 접근을 차단 사용 이유 외부 클래스에서 접근이 자유로울 시 값을 마음대로 넣게 되어 정보 오류가 발생할 수 있기 때문 사용 방법 get(), set()을 이용해 클래스 내부의 public 메서드를 통해서만 값에 접근할 수 있도록 함 package first_project; public class Person { private int age; pub.. 2021. 10. 22.
[자바] 생성자, 참조 자료형 생성자란? 클래스 생성할 때 Person person= new Person(); 이때 Person()을 생성자라고 한다. 생성자의 역할 클래스를 처음 만들 때 멤버 변수나 상수를 초기화하는 것 디폴트 생성자 Person()와 같이 직접 작성하지 않았지만 자동으로 만들어지는 생성자를 디폴트 생성자라고 함 주의할 점은 디폴트 생성자는 클래스 내부에 생성자가 하나도 없을 경우에만 만들어진다는 점 생성자 오버로드 클래스에 둘 이상의 생성자가 제공되는 경우. 이때는 인스턴스를 만들 때 필요한 생성자를 골라 사용 가능하다. public class Student { String name; int age; public Student() {} public Student(String pName, int pAge) { na.. 2021. 10. 22.