본문 바로가기

클래스

(9)
14. String 클래스 및 Class 클래스 1. String 클래스 String 선언하기 new 해서 쓰거나 그냥 = "abc"처럼 할당해서 쓰거나 1. 힙 메모리에 인스턴스로 생성되는 경우와 상수 풀에 있는 주소를 참조하는 두 가지 방법 2. 힙 메모리는 생성될 때마다 다른 주소 값을 가지지만, 상수 풀의 문자열은 모두 같은 주소 값을 가짐 -> 얘는 힙에 잡힌다. -> 생성마다 다른 주소 값(객체로 생성한다 생각해) -> 얘는 상수 풀에 잡힌다.-> 생성마다 같은 주소 값 == -> 주소값을 비교하니까 위와 같은 결과가 나온다, 3. 한 번 생성된 String은 불변(immutable) 4. String을 연결하면 기존의 String에 연결되는 것이 아닌 새로운 문자열 생성(메모리 낭비 발생 가능성) 문자열 객체 두 개 만들고 concat으로..
13. Object 클래스 및 메서드 활용 1. Object 클래스 모든 클래스의 최상위 클래스 1. java.lang.Object 클래스 2. 모든 클래스는 Object 클래스를 상속 받고, Object 클래스의 메서드 중 일부는 재정의 후 사용 가능 3. 컴파일러가 extends Object를 추가한다. java.lang 패키지 1. 프로그래밍시 import 하지 않아도 자동으로 import 된다.(import.java.lang) 2. 많이 사용하는 기본 클래스들이 속한 패키지(Object 포함됨) -> String, integer, System등 2. Object 클래스의 메서드 활용 toString() 메서드 1. 객체의 정보를 String으로 바꾸어서 사용할 때 쓰임 2. String 이나 integer 클래스는 이미 재정의 되어 있음 ..
12. 인터페이스(interface) 1. 인터페이스 인터페이스란? 추상 클래스(abstract class)와 마찬가지로 추상화된 데이터나 동작을 정의하는데 사용되는 중요한 개념 1. 모든 메서드가 추상 메서드로 선언됨 -> public abstract 2. 모든 변수는 상수로 선언됨 -> public static final 3. 자바 8부터 디폴트 메서드와 정적 메서드 기능 제공으로 일부 구현 코드가 있다. 인터페이스 구현 쩜쩜쩜 화살표는 구현이라는 뜻 오른쪽처럼 구현하면 implements를 사용해줘야함 // implements 키워드 // java에서 implements 키워드는 인터페이스를 구현할 때 사용, 클래스나 추상 클래스는 extends 키워드를 이용하여 상속받지만, 인터페이스는 implement 키워드를 이용하여 구현 즉, ..
10. 메서드 재정의(overring), 다형성, 다운 캐스팅 및 instanceof 1. 메서드 재정의 하기(overring) 하위 클래스에서 메서드 재정의 하기(오버라이딩) 상위 클래스에서 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음(오버라이딩시 반환값, 메서드 이름, 매개 변수 타입 및 개수 모두 같아야함) ex) VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않는다 가정하고 재정의한다면 (vscode를 사용한다면 오른쪽 키 -> 소스 작업으로 쉽게 만들 수 있다) 위는 소스 작업으로 오버라이딩 코드를 구현한 것이고 이를 구체화한다면 이렇게 오버라이딩하면 된다. 근데 @Override 가 뭘까?? // 애노테이션 // @Override 이게 애노테이션 1. 애노테이션은 ..
9. 상속에서 클래스 생성 과정과 형 변환 1. 하위 클래스가 생성 되는 과정 하위 클래스를 생성하면 상위 클래스가 먼저 생성됨! ex) new VIPCustomer()를 호출하면 Customer() 가 먼저 호출 클래스가 상속 받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출 2. super 키워드 1. 하위 클래스에서 가지는 상위 클래스에 대한 참조값 2. super()는 상위 클래스의 기본 생성자를 호출함 3. 하위 클래스에서 명시적으로 상위 클래스의 생성자를 호출하지 않으면 super()가 호출(이때 반드시 상위 클래스의 기본 생성자가 존재해야한다) -> 근데, 어치피 컴파일러에서 기본 생성자 없으면 자동으로 넣어줘서 괜찮음 4. super는 생성된 상위 클래스 인스턴스의 참조값을 가지므로 super를 이용하여 상위..
7. STATIC 변수, 메서드 및 응용 1. STATIC 변수 공통으로 사용하는 변수가 필요한 경우. 즉, 여러 인스턴스가 공유하는 기준 값이 필요한 경우 EX) 학생마다 새로운 학번 생성, 카드회사에서 카드 새로 발급할 때마다 새로운 카드 번호 부여 등 static 변수 선언과 사용하기 static int serialNum; 1. 인스턴스가 생성될 때 만들어지는 변수가 아닌, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당 2. 클래스 변수, 정적 변수라고도 한다. 3. 인스턴스 생성과 상관없이 사용 가능하므로 클래스 이름으로 직접 참조 ex) Student.serialNum = 10; 이렇게 참조 변수를 사용해도 되긴해 근데 되도록~ 클래스 네임을 사용하자!!!!! 2. STATIC 메서드 구현과 활용, 변수의 유효 범위 이렇게 priv..
6. 참조 자료형 변수, 접근 제어 지시자 및 정보 은닉, 객체 자신을 가리키는 this 1. 변수의 자료형 기본 자료형 -> int, long, float, double 등 참조 자료형 -> String, Date, Student 등 참조 자료형 1. 자바에서 참조 자료형 변수는 객체를 참조하기 위해 사용되는 변수 2. 참조 자료형 변수는 객체의 주소값을 저장하며, 객체 자체를 직접 저장하는게 아니라 해당 객체가 저장된 메모리 주소 참조 3. 일반적으로 클래스의 인스턴스를 생성하면, 해당 인스턴스는 힙 메모리에 할당됩니다. 이 때, 변수를 선언하고 인스턴스를 할당할 때 참조 자료형 변수 사용 참조 자료형 부분은 생성해서 사용해야한다!! 또한, 참조 자료형은 위와 같이 분리해서 정의해야함! // ==와 equals() 메소드 // == -> 변수에 저장된 객체의 주소를 비교 equals() ..
5. 클래스의 생성자 이전 다뤘던 클래스의 생성자에 대해 좀 더 추가적인 설명을 하고자 한다, 생성자 1. 객체를 생성할 때 new 키워드와 함께 사용한다. -> ex) new Student(); 2. 클래스 이름 () {} -> 기본 문법 3. 생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체 생성을 위해 new 와 함께 호출 4. 객체가 생성될 때 변수나 상수를 초기화하거나 다른 초기화 기능을 수행하는 메서드를 호출 5. 생성자는 반환값이 없고, 클래스 이름과 동일 6. 대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private으로 선언되는 경우 있음 1. 기본 생성자 1. 클래스에는 반드시 적어도 하나 이상의 생성자가 존재 2. 클래스에 생성자를 구현하지 않아도, new 키워드와 함께 생성자 호출 가..