반응형

Java 69

[Java, 객체지향] IS-A 관계, HAS-A 관계 차이 (상속 Inheritance)

[Java, 객체지향] IS-A 관계, HAS-A 관계 차이 (상속 Inheritance) IS-A 관계 (is a relationship) 말 그대로, '~은 ~이다.'로 상속관계를 의미한다. 상속에서 is-a 관계는 일반적인 개념과 구체적인 개념과의 관계이다. 상위 클래스가 일반적인 개념 클래스이고 하위 클래스가 구체적인 개념 클래스가 된다. (ex. 상위 클래스: 동물 / 하위 클래스: 포유류, 파충류) is-a 관계는 단순히 코드를 재사용하는 목적으로는 사용하지 않는다. (*IS-A 관계 읽는법: "이즈 어 관계"라고 읽는다.) HAS-A 관계 (has a relationship) 말 그대로, '~은 ~을 가지고 있다.'로 포함관계를 의미한다. 상속에서 has-a 관계는 한 클래스가 다른 클래스를..

Java 2021.08.11

[Java, 객체지향] 다형성이란? (Polymorphism)

[Java, 객체지향] 다형성이란? (Polymorphism) 다형성이란? 다형성은 하나의 코드가 여러 자료형으로 구현되어 실행되는 것이다. 즉, 같은 코드에서 여러 실행 결과가 나오는 것, 조상 타입 참조 변수로 자손 타입 객체를 다루는 것이다. ex. Customer c = new VIPCustomer(); 조상 타입(Customer) 참조 변수(c)로 자손 타입(VIPCustomer) 객체를 다룸 다형성은 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나이며 객체지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징이다. 참조변수가 조상 타입일 때와 자손 타입일 때의 다른 점은, 사용할 수 있는 멤버의 개수이다. 다형성을 사용하는 장점 다양한 여러 클래스를 하나의 자..

Java 2021.08.11

[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

[Visual Studio Code] Java Extension Pack 설치하기

[Visual Studio Code] Java Extension Pack 설치하기 Visual Studio Code에서 Java를 이용하려면 Java Extension Pack을 설치해야한다. 설치 방법은 간단하니 아래 방법 대로 따라하면 된다. 1. visual studio code를 설치한다. 2. 왼쪽 메뉴바의 Extensions 탭 > 검색창에 'java' 입력 > Java Extension Pack 선택 > Install 3. jdk도 설치해야 한다. 필자는 이미 설치되어있으므로 패스했지만, 필요하다면 인터넷 검색을 추천한다.

Java 2021.08.07

[Java] System.arraycopy 사용법 (배열 복사)

System.arraycopy 사용법 (배열 복사) System.arraycopy( Object src, int srcPos, Object dest, int destPos, int length ) Object src: Ctrl+C 할 곳 (복사하려는 원본) int srcPos: Object src의 몇 번째 인덱스부터 복사할 것인지 Object dest: Ctrl+V 할 곳 (붙여넣기하려는 대상) int destPos: Object dest의 몇 번째 인덱스부터 붙여넣기할 것인지 int length: Object src에서 몇 개를 복사할 것인지 1 2 3 4 5 6 7 8 9 int[] arr1 = {10, 20, 30, 40, 50}; int[] arr2 = {1, 2, 3, 4, 5}; System..

Java 2021.08.06
반응형