백엔드/자바
-
추상 메서드 (abstract method)백엔드/자바 2020. 8. 6. 15:39
추상이란? 자바에서 추상이란 구체화와 반대되는 구체적이지 않은 대략적인 미완성을 의미한다. 추상은 abstract라는 제어자를 붙이며 선언할 수 있다. 그리고 추상의 능력을 붙여줄 수 있는 것은 클래스와 메서드이다. 추상 메서드란? 기존의 함수는 아래와 같은 형식을 가진다. ◎ 선언부: '접근제어자 + 반환값 + 메서드명 + 파라미터' ◎ 구현부: 대괄호 ( { } ) 안에 메서드의 실행 코드를 입력 class abstract_test{ // 일반적인 클래스 선언 public int test() { // 어디서나 접근 가능한 정수값을 반환해주는 test 메서드 선언 return 5; // 메서드 실행 결과로 정수 5를 반환 } } 반면 추상 클래스는 다음과 같은 특징을 가진다. ◎ 선언부: '접근제어자 ..
-
상속과 다형성(polymorphism)백엔드/자바 2020. 8. 5. 18:07
다형성이란? 다형성은 객체지향에서의 중요한 특서어 중 하나로 상속과 깊은 관계가 있다. '다형성이란 여러 형태를 가질 수 있는 능력'을 의미한다. 자바는 한 가지 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있도록 설계되었다. 이러한 자바의 다형성을 이용하면 코드를 절약하고 효율적인 프로그래밍이 가능하다. 상속과 다형성 다형성은 상속과 아주 밀접한 관련을 갖는다. 왜냐하면 다형성은 상속할 때 비로소 나타나기 때문이다. 클래스 상속이 일어날 때 중요한 포인트는 하나는 '부모 클래스가 자식 클래스들을 대표'한다는 점이다. 현실에서 미성년자 자녀를 여럿 두고 있는 집안의 법적인 대리인이 부모인 것과 같은 개념이다. 자바상에서는 부모 클래스 타입의 참조 변수로 자식의 인스턴스를 참조할 수 있다는 말과 같은..
-
초기화백엔드/자바 2020. 8. 5. 16:05
변수의 초기화란? 변수의 초기화란 숫자를 0으로 만들어주는 것이 아니다. '변수를 선언하고 처음으로 값을 저장하는 것을 변수의 초기화'라고 한다. 물론 변수에 초기화를 하지 않아도 변수 자체가 기본값을 가지고 있어서 에러가 나진 않는다. 초기화의 필요성 초기화를 통해 값을 지정해주면 더욱 정확한 결과를 얻어낼 수 있다. 변수 초기화는 변수를 선언시 해줄 수도 있고, 당장 변수를 쓰는게 아니면 추후에 해줄 수도 있다. 초기화는 모든 생성자에 공통으로 수행되는 문장이 필요할 때 초기화 블럭에 모아서 한번에 써주면 코드가 간결해진다. 초기화의 종류는 크게 명시적 초기화와 초기화 블럭을 이용한 초기화 두 가지로 나뉜다. 1. 명시적 초기화(explicit initailization) 변수를 선언함과 동시에 초기..
-
생성자(Constructor)백엔드/자바 2020. 8. 5. 15:09
생성자란? 인스턴스가 호출될 때 같이 호출되는 "인스턴스 초기화 메서드"이다. Car A = new Car(); 위와 같이 객체를 생성하는 명령어를 내리면 "Car()"에 해당하는 부분이 생성자 부분이다. 생성자가 객체를 만드는 것이 아니라 객체가 만들어질 때 동시에 호출되서 고유의 역할을 실행하는 것이다. 생성자의 조건 - 생성자 이름은 생성자가 있는 클래스의 이름과 같아야 한다. - 생성자는 리턴값이 없다. 생성자의 역할 생성자는 설정에 따라서 아무것도 안하는 역할을 하기도 하고 멤버 변수를 초기화하는 등 인스턴스 생성시 호출되어 다양한 작업을 자동으로 호출과 동시에 실행하게 만들 수 있다. 생성자의 종류 기본 생성자(default constructor) 매개 변수가 없는 아무 기능도 없는 생성자를 ..
-
클래스 / 메소드 오버라이딩(method overriding)백엔드/자바 2020. 7. 28. 02:40
오버라이딩(method overriding)이란? 상속 관계에 있는 부모클래스에서 이미 정의된 메소드를 자식 클래스에서 다시 정의하는 것을 의미. 자식 클래스는 모든 메소드를 상속받는데 이러한 메소드는 그대로 사용해도 되고 오버라이딩을 통해 재정의하여 사용할 수도 있다. 오버라이딩 방법 ◎ 조상으로부터 상속받은 메서드의 매개변수 타입, 개수는 그대로 두고 즉 선언부는 그대로 두고 그 실행부분을 수정하여 새로운 실행 코드를 적어 넣으면 된다. ◎ 선언부는 그대로 두고 내용만 바꿔서 메소드를 재정의하는 것을 오버라이딩이라 한다. 오버라이딩 조건 ◎ 오버라이딩은 메소드의 동작만 재정의하는 것이므로 선언부는 기존 메소드와 같아야 한다. ◎ 다만 메소드의 반환 타입은 부모 클래스의 반환 타입으로 타입 변환할 수 ..
-
클래스의 super와 super()백엔드/자바 2020. 7. 28. 02:25
super란? 부모 클래스로부터 상속받은 필드(멤버변수)나 메소드를 자식클래스에서 참조하는데 사용하는 참조 변수. this를 써서 인스턴스 변수와 지역 변수를 구분하던 것처럼 super를 이용하며 부모 클래스의 변수와 자식 클래스의 변수를 구분하여 사용할 수 있다. 예시를 보면 더 쉽게 이해할 수 있다. 인스턴스 변수가 선언된 부모 클래스 class Parents{ int test_num = 10; } 부모 클래스의 인스턴스 변수와 이름이 같은 변수를 초기화한 자식 클래스 class Child extends Parents{ int test_num = 15; public void test_method() { System.out.println("부모 클래스가 가진 값: "+super.test_num); Sy..
-
클래스의 상속(inheritance)백엔드/자바 2020. 7. 28. 01:23
상속이란? 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 말함. 더 간단히 말해 두 클래스는 부모와 자식 관계로 맺어주는 것을 말함. 상속은 캡슐화, 은닉화와 더불어 객체지향프로그래밍을 구성하는 중요 요소 중 하나. 그림으로 간단히 나타내면 다음과같다. 상속의 장점 클래스 상속은 다음과 같은 특징을 갖는다. - 자식 클래스는 부모 클래스의 모든 멤버(클래스 내 메서드, 변수)를 상속받는다. - 단, 초기화 블록과 생성자는 상속받지 않는다. - 결과적으로 모든 자식 클래스는 부모 클래스보다 같거나 더 많은 멤버를 가진다. - 자손을 아무리 변경해도 조상에 영향을 주지 않는다. 반대로 부모는 자식에게 영향을 준다. - 하나의 부모는 여러 자식 클래스를 거느릴 수 있지만, 반대로 ..
-
초기화백엔드/자바 2020. 7. 27. 18:44
초기화란? 자바에서 초기화란 0을 만드는 작업이 아니라 변수를 선언하고 값을 저장하는 것을 의미한다. 초기화는 가급적이면 선언과 동시에 해주는 것이 좋다. 멤버 변수는 초기화를 하지 않아도 변수의 타입에 맞는 기본값으로 초기화가 이뤄진다. 하지만 지역 변수는 사용하기 전에 반드시 초기화가 이뤄져야 한다. 초기화의 종류 초기화의 종류는 세 가지가 있다. 1. 명시적 초기화 public class Tset { static int a = 10; // 클래스 변수(스태틱변수)의 명시적 초기화 int b = 20; // 인스턴스 변수의 명시적 초기화 int c = 30; } 변수의 선언과 동시에 변수에 값을 대입하는 것을 말한다. 2. 생성자 이용 public class Test { // 생성자를 이용한 초기화...