중첩 클래스(Nested Class) 클래스 내부에 선언한 클래스로 클래스 안에 또 다른 클래스가 정의된 것이다. 관련 있는 것을 하나로 묶고 싶을 때 사용한다. 특정 클래스를 자신의 클래스 내부적인 용도로만 사용하고자 할 때 효율적이다. 두 클래스의 멤버들을 서로 쉽게 접근할 수 있다. 외부에 불 필요한 관계 클래스를 감추어 코드의 복잡성을 줄일 수 있다. 클래스의 멤버로 선언되는 중첩 클래스는 멤버 클래스이며, 메소드 내부에 선언되는 중첩 클래스를 로컬 클래스라 한다. 선언 위치에 따른 분류 선언 위치 객체 생성 조건 멤버 클래스 인스턴스 멤버 클래스 class A { class B {...} } A 객체를 생성해야 B 객체를 생성할 수 있다. 정적 멤버 클래스 class A { static clas..
CLASS
추상(abstract) 추상은 실체 간에 공통되는 특성을 추출한 것을 말한다. 추상 클래스(abstract class) 추상적으로 밖에 그려지지 않은 클래스로, 클래스가 전체적인 구성을 다 가지지 못한 채 설계만 되어 있는 클래스다. 객체를 생성할 수 있는 클래스를 실체 클래스라 하면, 실체 클래스의 공통적인 필드나 메소드를 추출해서 선언한 클래스가 추상 클래스다. 추상 클래스는 실체 클래스의 부모 역할을 한다. 실체 클래스는 추상 클래스를 상속해서 공통적인 필드나 메소드를 물려 받을 수 있다. 실체 클래스의 공통되는 필드와 메소드를 추출해서 만들어진거라 new 연산자를 사용하여 객체를 직접 생성할 수 없다. class Child extends Parent {...} 실체 클래스를 만들기 위한 부모 클래..
클래스 변환은 상속 관계에 있는 클래스에서 발생한다. 자동 타입 변환(Promotion) 상속 관계에서 자식이 부모 타입으로 타입 변환하는 것을 클래스의 자동 타입 변환이라 한다. 부모타입 변수 = 자식타입객체; Child child = new Child(); Parents parents = child; Parents parents = new Cat(); Parents와 Child 변수는 타입만 다르고 동일한 Child 객체를 참조한다. 바로 위의 부모가 아니더라도 상속 계층에서 상위 타입이라면 자동 타입 변환이 가능하다. 상속 관계에 있지 않으면 컴파일 에러가 나타난다. 예제 코드 더보기 package ch07.sec07.exam02; public class Parent { // 메소드 선언 publi..
new 연산자는 객체 생성 후 연이어 생성자(Constructor)를 호출해서 객체를 초기화하는 역할을 한다. 객체 초기화란 필드 초기화를 하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것이다. 문법 클래스 변수 = new 클래스( ); 생성자 호출 생성자 실행이 끝나면 new 연산자는 객체의 주소를 리턴하고, 리턴된 주소는 클래스 변수에 대입되어 객체의 필드나 메소드 접근에 이용된다. 1. 기본 생성자(Default Constructor) 모든 클래스는 생성자가 존재하며, 하나 이상을 가질 수 있다. 클래스에 생성자 선언이 없으면 컴파일러는 기본 생성자를 바이트코드 파일에 자동으로 추가시킨다. 문법 [public] 클래스() { } 클래스가 public이면 기본 생성자도 public이지만, 클래스..
필드(Field) 필드는 객체의 고유 데이터, 부품 데이터, 현재 상태 데이터를 저장한다. 필드 선언 필드 선언 방법은 변수와 동일하지만 반드시 클래스 블록에서 선언되어야만 필드 선언이 된다. 타입 필드 [ = 초기값]; 타입은 필드에 저장할 데이터의 종류를 결정한다. 필드명 첫 문자는 소문자로 한다. camel 스타일로 작성한다. 초기값을 제공하지 않을 경우 자동으로 기본값으로 초기화된다. 필드 선언은 중괄호 블록 어디서든 가능하다. 생성자와 메소드 중괄호 블록 내부에는 선언 불가능하다. 필드 선언 예제 코드 더보기 //--Car.java package cs06.sec06.exam01; public class Car { // 필드 선언 String model; boolean start; int spee..
클래스로부터 객체를 생성하려면 객체 생성 연산자 new를 사용한다. new 연산자는 객체를 생성시킨 후 객체의 주소를 리턴하여 클래스 변수에 대입할 수 있다. 문법 클래스 변수 = new 클래스(); 라이브러리(library) 클래스 실행할 수 없으며 다른 클래스에서 이용하는 클래스 실행 클래스 main() 메소드를 가지고 있는 실행 가능한 클래스 자바 프로그램은 하나의 실행 클래스와 여러개의 라이브러리 클래스들로 구성되며, 실행 클래스는 실행하면서 라이브러리 클래스를 내부에서 이용한다. 객체 생성 예제 코드 StudentExample 클래스의 main() 메소드에서 Student 객체를 생성 더보기 Student.java public class Student { } StudentExample.java ..
클래스 선언 객체 생성을 위한 설계도를 작성하는 작업이다. 클래스 작성 규칙 하나 이상의 문자로 이루어진다. 첫 문자는 숫자가 될 수 없다. $, _ 외에 다른 특수문자는 사용 불가능하다. 자바 명령어, 키워드는 사용 불가능하다. 이름은 대소문자를 구분하며 첫번째 문자는 대문자로 작성한다. 문법 //클래스 선언 public class 클래스명 { } public class는 공개 클래스를 선언한다는 뜻이다. 공개 클래스(public class) 어느 위치에 있든지 패키지와 상관 없이 사용할 수 있는 클래스 예제 코드 // 소스 파일 package cs06.sec03; // 패키지 선언 public class SportsCar { // 공개 클래스 선언 } class Tire { } 하나의 소스 파일은 다..
1. 클래스(class) 자바에서 클래스란 객체를 정의하고 틀 또는 설계도와 같은 의미이다. 자바에서는 설계도인 클래스를 갖고, 여러 객체를 생성하여 사용한다. 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성된다. field란 클래스에 포한된 변수(variable)를 의미한다. 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이다. 2. 인스턴스(Instance) 자바에서 클래스를 사용하기 위해 해당 클래스 타입의 객체를 선언해야 하는데, 클래스로부터 객체를 선언하는 과정을 클래스의 인스턴스 화 라고 한다. 이렇게 선언된 해당 클래스 타입의 객체가 인스턴스(Instance)이며, 인스턴스란 메모리에 할당된 객체를 의미한다. 하나..
객체 지향 프로그래밍(Object Oriented Programming) 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체(Object) 객체란 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것을 말한다. 객체는 속성과 동작으로 구성되며 각각 필드(field)와 메소드(method)라 한다. 객체 모델링(Object Modeling) 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 말하며, 현실 세계 객체의 대표 속성과 동작을 추려내어 소프트웨어 객체..
class class 선택자는 특정 집단의 여러 요소를 한 번에 선택할 때 사용된다. 이러한 특정 집단을 클래스(class)라고 하며, 같은 클래스 이름은 가지는 요소들을 모두 선택한다. 선택자 명명시 숫자로 시작하면 안되며, 언더코어(_)나 하이픈(-)을 제외한 특수문자는 사용 불가하다. id id 선택자는 CSS를 적용할 대상으로 특정 요소를 선택할 때 사용된다. 웹 페이지에 포함된 여러 요소 중에서 특정 아이디 이름을 가지는 요소만 선택한다. 여러 요소에 같은 아이디 이름을 사용해도 작동은 하지만 중복된 아이디를 가지고 javascript 작업을 하게 되면 오류가 발생하여 되도록 하나의 웹 페이지 안에서 중복되지 않게 사용해야한다. id 속성 명명시 최소 1글자 이상이며, 공백은 없어야한다. id는..