반응형

java 50

[Java, 객체지향] 생성자(constructor) 의미와 종류 (+this)

[Java, 객체지향] 생성자(constructor) 의미와 종류 (+this) 생성자 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드를 생성자라고 한다. 즉, 생성자는 인스턴스 변수의 초기화 작업에 주로 사용된다. 생성자를 만들 때, 생성자의 이름은 클래스 이름과 같아야 한다. 또한 생성자는 리턴값이 없다. (= void를 붙이지 않는다.) 모든 클래스는 반드시 생성자를 가져야 한다. 생성자에는 기본 생성자와 매개변수가 있는 생성자가 있다. 1. 기본 생성자 (default constructor) 매개변수가 없는 생성자이며, 생성자가 하나도 없을 때는 컴파일러가 자동으로 추가해준다. 형식: 클래스이름( ) { } 2. 매개변수가 있는 생성자 매개변수가 있는 생성자이다. 기본 생성자 없이 매개변..

Java 2021.08.11

[Java, 객체지향] 오버로딩이란? (overloading)

[Java, 객체지향] 오버로딩이란? (overloading) 오버로딩 (Overloading) overload는 영어로 '과적하다'라는 뜻으로, overloading은 한 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것이다. 오버로딩이 성립하려면 아래 조건을 모두 만족해야 한다. 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 반환(return) 타입은 영향 없다. (=return 타입이 다르다고 오버로딩이 성립하는 게 아니다) ex. long add(int a, long b) { return a+b; } long add(long a, int b) { return a+b; } 변수는 같은 이름이 여러 개 있을 수 없다. 메서드도 변수처럼 같은 이름이 여러 개 있으면 안 될..

Java 2021.08.11

[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
반응형