본문 바로가기

java

(18)
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를 이용하여 상위..
8. 객체 간 상속, 객체 배열 및 ArrayList, 캡슐화 1. 클래스 상속 새로운 클래스를 정의 할 때 이미 구현된 클래스를 상속받아서 속성이나 기능을 확장하여 구현 (이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야할 때 기존 클래스를 상속) 상속의 문법 class B extends A {} -> 이때 'A' 자리에는 단 하나의 클래스만 올 수 있다.(자바는 단일 상속만을 지원) 상속 활용한 멤버쉽 클래스 구현하기 참고로, private로 되어 있다면 상속 불가 -> 하위 클래스에서 접근 가능하지만 외부 클래스에서 접근 불가한 protected 사용하라!! 이렇게 상위 클래스를 구현해놓고 하위 클래스인 VIP 클래스를 만든다면 상속 X 멤버 변수를 하나하나 다시 구현해야하는게 참 번거롭다. 이때 상속을 이용하자! 상속 O 이렇게 간단히 나타내..
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 키워드와 함께 생성자 호출 가..
4. 자바 클래스 및 함수와 메서드 1. 클래스 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 코드 상태 1. public 이란 어디서든지 접근이 가능하다는 것 2. public 이라는 이름을 가진 클래스는 파일에 단 하나 그리고 파일 이름이랑 클래스 이름이 같아야함 public으로 선언된 접근 제어자는 같은 패키지 클래스는 물론이고 다른 패키지의 클래스도 접근이 가능!!! 또한, 클래스 이름을 만들때는 첫긇자를 대문자로 쓸 것! 클래스 사용하기 이렇게 Student 클래스를 만들었다. 어찌 사용할까?? --> 클래스를 사용하는 클래스를 만들자!! 이렇게 클래스를 사용할 클래스를 만들고 Student 클래스 객체를 만들자! --> 이때! 만들어진 객체를 '인스턴스'(참조변수) 라고 한다. // 인스턴스 // 실제 클레스 기..
3. 자바의 배열 1. 배열 배열이란? 1. 동일 자료형의 순차적 구조 2. 인덱스 연산자 []를 이용하여 빠른 참조가 가능 3, 사적헐 때 크기를 선언해야함 4. 물리적 위치와 논리적 위치가 동일(순서를 가진 자료 구조) 5. 배열의 순서는 0부터 시작 6. 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용 2. 배열 선언과 초기화 배열 선언 int [] arr1 = new int[10]; -> 자료형 [] 배열 이름 = new 자료형[크기] (int arr2 [] = new int [10] 이렇게 써도된다.) 1. 자바는 new를 써야한다. 2. 배열을 선언했을때 각 배열의 위치에 값을 선언하지 않았다면 모두 0으로 저장된다. 참고로, 배열의 길이와 요소의 개수는 동일하지 않다. // new 가 뭘까 // ..