반응형

객체지향 22

[Java, 객체지향] 오버라이딩, @Override Annotation(오버라이드 어노테이션)

오버라이딩 (overriding) 사전적 의미는 '다른 무엇보다 더 중요한 것, 더 우선시되는 것', 또는 동사로 '덮어쓰다'라는 의미이다. 코딩에서의 의미는, 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의할 수 있다는 특성을 말한다. 메서드 오버라이딩을 할 때의 조건은 아래와 같다. 1. 선언부는 변경 불가하고 내용만 변경 가능하다. 2. 접근 제어자가 상위 클래스의 메서드보다 좁은 범위로 변경할 수 없다. 3. 예외 선언은 상위 클래스의 메서드보다 많이 선언할 수 없다. @Override 어노테이션 (Annotation) 재정의된 메서드라는 의미로, 선언부가 기존의 메서드와 다른 겨웅 에러가 발생한다. 어노테이션..

Java 2021.08.11

[Java, 객체지향] 하위 클래스가 생성되는 과정 & 업캐스팅/다운캐스팅

1. 하위 클래스가 생성되는 과정 하위 클래스가 생성되는 과정 하위 클래스가 생성될 때 상위 클래스가 먼저 생성된다. 상위 클래스의 생성자가 호출되고, 하위 클래스의 생성자가 호출된다. 하위 클래스의 생성자에는 항상 상위 클래스의 생성자가 호출되어야 한다. 하위 클래스에서 상위 클래스의 생성자를 호출하는 코드가 없는 경우, 컴파일러는 상위 클래스 기본 생성자를 호출하기 위해 super()를 추가한다. super()로 호출되는 생성자는 상위 클래스의 기본 생성자이다. 만약 상위 클래스의 기본 생성자가 없는 경우(=매개변수가 있는 생성자만 있는 경우), 하위 클래스는 명시적으로 상위 클래스의 생성자를 호출해야 한다. 참조변수 super 객체 자신을 가리키는 참조변수이다. 인스턴스 메서드나 생성자에서만 사용 ..

Java 2021.08.11

[Java, 객체지향] 클래스 상속(inheritance)이란?

[Java, 객체지향] 클래스 상속 (inheritance)이란? 클래스에서 상속의 의미 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속(inheritance)받아서 속성이나 기능이 확장되는 클래스를 구현하는 것 상속하는 클래스 상위클래스, parent class, base clasee, super class 하위 클래스보다 일반적인 개념과 기능을 가짐 상속 받는 클래스 하위 클래스, child class, derived class, subclass 상위 클래스보다 구체적인 개념와 기능을 가짐 하위 클래스는 상위 클래스의 모든 멤버를 상속받으므로, 하위 클래스의 멤버 개수는 상위 클래스의 멤버 개수보다 항상 같거나 많다. 또한, 상위 클래스의 변경은 하위 클래스에 영향을 미치지만 하위 클래스의 변경..

Java 2021.08.11

[Java, 객체지향] static 메서드, 인스턴스 메서드 비교

[Java, 객체지향] static 메서드, 인스턴스 메서드 비교 static 메서드 (=클래스 메서드) static으로 시작 객체 생성 없이 '클래스이름.메서드이름()'으로 호출 메서드 내에서 인스턴스 변수 사용 불가능 (매개변수만으로 사용 가능) ★ 인스턴스 메서드 호출 불가능 ★ 언제 static을 붙이는가? 인스턴스 변수를 사용하지 않을 때 (≒ 지역 변수를 사용할 때) ex) static long add(long a, long b) { return a+b; } 매개변수만으로 사용 가능하다. ex) Math.random() *지역 변수: 메서드 내에 선언한 변수 *static 메서드에 인스턴스 변수를 사용하면 에러 발생 인스턴스 메서드 static이 안 붙음 인스턴스 생성 후, '참조변수.메서드이..

Java 2021.08.10

[Java, 객체지향] 선언위치에 따른 변수 종류

변수 선언위치에 따른 변수 종류 1. 클래스 영역 1) 인스턴스 변수 (instance variable) : 객체 생성 필요 (객체(인스턴스) 생성 해야 쓸 수 있음) : 즉, 객체 = 인스턴스 변수를 묶어 놓은 것 : 객체마다 달라야 함 (개별 속성) ex. 5만원권 지폐 일련번호 2) 클래스 변수 (class variable) (= static 변수, 공유변수) : "static int cv;" 등, static을 꼭 선언해줘야 함. static 선언 안 할 시 인스턴스 변수임 : 객체 생성 필요 X (객체 생성 안 해도 쓸 수 있음) : 객체마다 같아야 함 (공통 속성) ex. 5만원권 지폐 가로 세로 길이 (* 인스턴스 변수와 클래스 변수를 멤버 변수라고 부른다.) 2. 메서드 영역 1) 지역 변..

Java 2021.08.06

[Java, 객체지향] 변수 → 배열 → 구조체 → 클래스

변수, 배열, 구조체, 클래스의 관계 변수 ↓ 배열 (같은 타입의 변수(데이터)) ↓ 구조체 (다른 타입의 변수(데이터)도 가능) ↓ 클래스 (서로 관련 있는 변수(데이터) + 메서드(함수)) 예시 int hour1, hour2, hour3; int minute1, minute2, minute3; int second1, second2, second3; ↓ 배열 int[] hour = new int[3]; int[] minute = new int[3]; int[] second = new int[3]; ↓ 클래스 class Time{ int hour; int minute; int second; } Time[] t = new Time[3]; t[0] = new Time(); t[1] = new Time(); ..

Java 2021.08.06

[Java, 객체지향] 객체 배열

배열이란? 배열: 같은 종류의 여러 데이터를 하나로 젖아할 수 있는 공간 배열 선언하기 int[] arr = new int[10]; 또는 int arr[] = new int[10]; (주로 첫 번째 표기를 많이 씀) 아래의 배열은 다 같은 것을 의미한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 int[] arr1 = new int[3]; arr1[0] = 1; arr1[1] = 2; arr1[2] = 3; int[] arr2 = new int[] {1, 2, 3}; // "int[3]"으로 쓰면 안 됨 int[] arr3 = {1, 2, 3}; // int[] arr4; // arr4 = {1, 2, 3}; // Error, 선언과 동시에 초기화할 때만 new 생략 가능함 int[] ..

Java 2021.08.06
반응형