썸네일 [JAVA] 최상위 클래스 Object에 대해 안녕하세요 로로봉입니다 : ) 오늘은 자바의 최상위 클래스인 Object에 대해 알아보도록 하겠습니다. 자바의 모든 클래스는 Object 클래스를 상속받습니다. 즉, Object 클래스는 자바의 최상위 클래스라고 합니다. 컴파일러는 아무런 클래스도 상속하지 않으면 자동으로 extends Object를 상속합니다. 아래와 같이 클래스 A를 상속받아 클래스 B를 만들었을 때 부모 클래스인 클래스 A는 extends를 붙이지 않아 아무것도 상속하지 않았습니다. class A { ... } class B extends A { ... } 하지만 컴파일러는 컴파일 과정에서 자동으로 클래스 A에 extends Object를 추가하고 컴파일합니다. 따라서 상속 관계가 Object ← A ← B 이렇게 만들어 집니다. ..
썸네일 [JAVA] 자바 super 키워드와 super() 메서드 안녕하세요 로로봉입니다 : ) 오늘은 JAVA에서 super 키워드와 super() 메서드에 대해 알아보도록 하겠습니다. this 키워드와 this() 메서드는 클래스 자신의 내부 구성 요소를 호출하는 문법입니다. 자기 객체를 가리키는 참조 변수명으로 생략했을 때는 컴파일러가 자동으로 추가해서 처리합니다. this는 자신의 객체, this() 메서드는 자신의 생성자를 의미합니다. 반대로 super는 부모의 객체, super()는 부모의 생성자를 의미합니다. super와 super() 메서드는 부모 클래스에 대한 것이기 때문에 상속 관계에서만 사용할 수 있습니다. 1) 부모의 객체를 가리키는 super 키워드 super 키워드는 부모의 객체를 가리키는 것으로 필드명의 중복 또는 메서드 오버라이딩으로 가려진..
썸네일 [JAVA] 자바 메서드 오버라이딩 안녕하세요 로로봉입니다 : ) 오늘은 메서드 오버라이딩에 대해 알아보도록 하겠습니다. 1) 메서드 오버라이딩의 개념과 동작 메서드 오버라이딩은 부모 클래스에게 상속받은 메서드와 동일한 이름의 메서드를 재정의하는 것으로, 부모의 메서드를 자신이 만든 메서드로 덮어쓰는 개념입니다. 마치 우리가 동일한 위치에 동일한 파일을 저장하고자 할 때 덮어쓰기가 수행되는 것과 같은 원리입니다. 메서드 오버라이딩이 수행되기 위해서는 2가지 조건을 만족해야 합니다. - 부모 클래스의 메서드와 시그너처 및 리턴 타입이 동일해야 한다. - 부모 클래스의 메서드보다 접근 지정자의 범위가 같거나 넓어야 한다. 먼저 부모 클래스의 메서드와 시그너처(메서드명, 입력매개변수의 타입과 개수)뿐 아니라 리터 타입까지 완벽하게 일치해야 합니..
썸네일 [JAVA] 자바 객체의 타입 변환 안녕하세요 로로봉 입니다 : ) 오늘은 자바에서 객체의 타입 변환에 대해 알아보겠습니다. 기본 자료형을 사용할 때 다른 프로그램 언어와 마찬가지로 자바 프로그램은 등호(=)를 중심으로 항상 왼쪽과 오른쪽의 자료형이 일치해야 합니다. 만약 자료형이 서로 다를 경우에는 컴파일러가 자동으로 타입을 변환해주거나 개발자가 직접 타입을 변환해 주어야 합니다. 객체에서도 이러한 타입 변환이 일어납니다. 이것을 업캐스팅, 다운캐스팅이라고 합니다. 1) 객체의 업캐스팅과 다운캐스팅 기본 자료형에서 업캐스팅은 범위가 좁은 쪽에서 넓은 쪽으로 캐스팅하는 것을 말하고, 다운 캐스팅은 그 반대를 말합니다. 객체에서는 자식 클래스에서 부모 클래스 쪽으로 변환되는 것이 업캐스팅이고, 그 반대가 다운 캐스팅입니다. 객체는 항상 업캐..
썸네일 [JAVA] 자바 클래스 상속에 대해 안녕하세요 로로봉입니다 : ) 오늘은 자바에서 클래스 상속에 대해 알아보도록 하겠습니다. 클래스의 상속은 부모 클래스의 멤버를 내려받아 자식 클래스 내부에 포함시키는 것을 말합니다. 1) 상속의 개념 상속을 이해하기 위해 예를 들어보겠습니다. 아래와 같이 '어린이'와 '어른' 클래스가 있다고 가정합니다. '어린이'클래스에는 '이름', '나이', '키', '학년' 4가지 필드와 '먹기()', '잠자기()', '공부하기()'라는 메서드가 있다고 가정하고, '어른'클래스에는 '이름', '나이', '키', '직업' 4가지 필드와 '먹기()', '잠자기()', '일하기()'라는 메서드가 있다고 가정합니다. 사람이라면 누구나 이름과 나이, 키가 있고, 먹고 자야하므로 두 클래스 모두 이름 필드와 나이 필드 키 필드..
썸네일 [JAVA] 자바 제어자 (접근 지정자, static 제어자) 안녕하세요 로로봉입니다 : ) 오늘은 자바의 제어자 중 접근 지정자와 static에 대해 알아보겠습니다. 접근 지정자는 클래스 자체나 클래스의 내부 구성 요소 앞에 위치해서 접근 범위를 지정하는 제어자 입니다. 한편 static 제어자는 객체를 생성하지 않아도 클래스의 내부 구성 요소를 사용할 수 있도록 하는 제어자로 메모리에 어떻게 저장되는지 개념적으로 알아보도록 하겠습니다. 1) 접근 지정자 자바 제어자는 클래스, 필드, 메서드, 생성자 등에게 어떤 특징을 부여하는 문법 요소입니다. 접근 지정자는 자바 제어자의 한 종류로 위에서 간단히 설명했듯이 클래스, 멤버, 생성자 앞에 위치하고 사용 범위를 정의하는 역할을 합니다. 패키지를 학습할 때 다른 패키지에서 클래스를 사용할 수 있도록 public을 사용..
썸네일 [JAVA] 자바 클래스 외부 구성 요소 - 외부 클래스 안녕하세요 로로봉입니다 : ) 자바에서 클래스 외부 구성 요소 중 마지막으로 외부 클래스에 대해 알아보도록 하겠습니다. 외부 클래스는 public 클래스의 외부에 추가로 정의한 클래스를 말합니다. 1개의 자바 소스 파일에는 최대 1개의 public 클래스만 존재할 수 있고, 그 클래스명은 파일명과 일치해야 합니다. 소스 파일 안에서 public 클래스를 제외한 모든 클래스는 외부 클래스입니다. public 클래스가 아니면 다른 패키지에서 임포트할 수 없으므로 외부 클래스는 같은 패키지 안에서만 사용할 수 있습니다. [BCD.java 파일] package abc.bcd; class ABC {// 외부 클래스는 다른 패키지에서 임포트가 불가능. ... } public class BCD {// public 클..
썸네일 [JAVA] 자바 클래스 외부 구성 요소 - 패키지와 임포트 안녕하세요 로로봉입니다 : ) 이번에는 클래스의 외부에 위치할 수 있는 3가지 "패키지, 임포트, 외부 클래스" 중 패키지와 임포트에 대해 알아보겠습니다. 1) 패키지 패키지는 비슷한 목적으로 생성된 클래스 파일들을 한 곳에 모아 둔 폴더를 의미합니다. 프로그램을 작성하다 보면 각각 목적에 따라 여러 개의 클래스 파일들이 생깁니다. 이렇게 동일한 목적으로 만들어진 클래스들을 1개의 공간에 묶어 관리하기 위한 것이 패키지 입니다. 1개의 프로젝트의 1개의 패키지를 생성할 수도 있고, 여러 개의 패키지를 생성할 수도 있습니다. 패키지를 아에 생성하지 않아도 문법적으로는 전혀 문제가 되지 않습니다. 생성된 패키지를 폴더의 구조상으로 보면 src 폴더의 하위 폴더에 위치합니다. 컴파일이 수행되면 바이트 코드가 ..
썸네일 [JAVA] 자바 this 키워드와 this() 메서드 안녕하세요 로로봉입니다 : ) 오늘은 this키워드와 this() 메서드에 대해 알아보겠습니다. 1) 내부 객체 참조 변수명 this 키워드 클래스의 외부에서 멤버를 호출하기 위해서는 객체를 먼저 생성한 후 참조 변수명.멤버명의 형태로 호출하지만 클래스 내부에서는 객체의 생성 없이 필드와 메서드를 바로 사용할 수 있었습니다. 그 이유는 모든 메서드에는 자신이 포함된 클래스의 객체를 가리키는 this라는 참조 변수가 있기 때문입니다. 클래스 내부에서 필드와 메서드를 그대로 사용하게 되면 컴파일러가 자동으로 this. 를 추가해주어 컴파일하여 참조 변수명 없이 바로 사용할 수 있는 것입니다. this.를 생략해도 항상 컴파일러가 추가해 주기때문에 굳이 신경 쓸 필요가 없어 보이지만, 그렇지 않습니다. thi..
썸네일 [JAVA] 자바 클래스 내부 구성 - 생성자 안녕하세요 로로봉입니다 : ) 오늘은 자바에서 클래스 내부 구성중 생성자에 대해 알아보겠습니다. 생성자는 객체를 생성하는 역할을 하는 내부 구성요소입니다. 객체 내에 포함되는 필드의 초기화도 주로 생성자 내에서 처리합니다. 1) 생성자 특징 생성자는 반드시 클래스 명과 동일한 이름으로 지어야 합니다. 메서드와 비슷한 구조를 지니고 있지만 리턴 타입이 없는 특징이 있습니다. void와 같이 리턴하지 않는다는 구조가 아닌 아에 리턴 타입이 없는 것을 말합니다. 생성자 문법 구조는 아래와 같습니다. 클래스명(입력매개변수) { ... } 2) 기본 생성자의 자동 추가 생성자는 따로 만들지 않는 경우 생성자를 포함하지 않는 클래스에게 컴파일러가 매개변수가 없는 기본 생성자를 추가해주어 생성자가 내부적으로 생성되어..
썸네일 [JAVA] 자바 클래스 내부 구성 - 메서드 안녕하세요 로로봉입니다. : ) 지난번에는 필드에 대해 알아보았습니다. 오늘은 클래스의 내부 구성 요소 중 두 번째인 메서드에 대해 알아보도록 하겠습니다. 1) 메서드 정의 메서드는 클래스의 기능에 해당하는 요소입니다. 먼저 메서드 정의의 문법적 구조를 살펴보도록 하겠습니다. 자바제어자 리턴(반환)타입 메서드명(입력매개변수) { 메서드 내용 } public static int sum(int a, int b) { // 메서드 내용 } 리턴 타입은 메서드 종료 이후 반환되는 값의 자료형을 의미합니다. 메서드명은 변수명 선정 규칙과 동일하며, 보편적으로 소문자로 시작합니다. 소괄호 안에는 입력 매개변수가 들어오는데, 메서드를 호출할 때 전달되는 값의 자료형과 전달받은 값을 저장할 지역 변수명을 정의합니다. 마..
썸네일 [JAVA] 자바 클래스 내부 구성 - 필드 안녕하세요 로로봉입니다 : ) 자바에서 필드에 대해 알아보도록 하겠습니다. 1) 필드와 지역 변수의 구분 필드는 클래스에 포함된 변수로 객체의 속성값을 지정할 수 있습니다. 필드는 지역 변수와 구분하여 사용해야 합니다. 지역 변수는 메서드에 포함된 변수를 말합니다. 필드와 지역 변수는 어떤 중괄호 안에 선언됐는지에 따라 구분할 수 있습니다. 클래스의 중괄호 안에 선언된 변수를 '필드', 메서드의 중괄호 안에 선언된 변수를 '지역 변수'라고 생각하면 됩니다. 필드와 지역 변수의 가능 큰 차이점은 생성되는 메모리의 위치입니다. 필드는 힙 메모리의 객체 내부, 지역 변수는 스택 메모리에 생성됩니다. 스택 메모리에 저장되는 변수는 시간이 지나면 자바 가상 머신이 자동으로 삭제하지만, 힙 메모리의 객체 안에 저장..
반응형