목록프로그래밍 언어 (80)
나의 IT일지
객체는 클래스에 구현되어 있는 특징을 바탕으로 생성이 된다. 이때, 객체들의 메서드는 같지만 다른 결과값을 출력해야 하는 경우가 있다. 이럴 경우에 추상 클래스를 사용하지만 인터페이스를 사용하기도 한다. 인터페이스란 객체의 기능을 정의한 타입으로, 다수의 객체에 대한 기본적인 기능을 정의한다. 인터페이스 인터페이스는 같은 이름의 메소드를 다른 결과값으로 출력하는 경우에 사용하는 타입으로, 추상클래스와 같은 기능을 한다. 그렇다면 추상클래스와 인터페이스를 구분하는 이유는 무엇일까? 추상클래스는 자식 객체의 특징을 확장하는 상속의 목적이라면, 인터페이스는 객체의 기능을 정의하는 구현의 목적이다. 그래서 같은 메서드로 요청할 때, 추상클래스는 객체에 직접 요청한다는 느낌이라면, 인터페이스는 객체에 간접적으로 ..
객체지향언어에는 실체하는 대상들의 공통된 특성을 객체로 생성할 수 있으며, 이를 추상화라고 한다. 이런 추상화는 실체 클래스들을 작성할 때, 같은 특성을 가지는 클래스를 가지는 경우에 시간을 절약할 수 있으며, 같은 이름의 변수와 메서드를 사용하게 한다. 추상 클래스 객체를 생성할 수 있는 실체 클래스들에서 공통적인 메소드나 변수를 추출해서 하나의 클래스로 생성하는 것을 추상화라고 하며, 이때 생성되는 클래스를 추상 클래스라고 한다. 추상클래스와 실체 클래스는 상속의 관계를 가진다. 즉, 추상클래스가 부모클래스, 실체클래스가 자식클래스가 되면서, 실체클래스는 추상클래스의 특징을 상속한다. 추상클래스는 "abstact"키워드로 선언이 되며, 블록에는 공통할 특징으로 구성되어 있어야 한다. 특히, 추상클래스..
변수에 선언한 타입과 다른 타입의 데이터 값을 저장할 때, 변수의 타입에 맞게 값을 변환해서 저장을 하였다. 이를 타입변환이라고 하는데, 타입변환은 데이터 타입을 변수의 타입에 맞게 바꿔서 저장하는 것으로, 프로그램 실행 도중에 자동으로 변환하는 자동변환타입과 변환할 타입을 선언해서 변환하는 강제변환 타입이 있다. 이렇게 프로그램의 요소들이 상황에 따라 여러가지 형태를 가지게 되는 특성을 다형성이라고 하며, 오버로딩, 오버라이딩, 타입변환이 다형성에 속한다. 타입변환은 변수 뿐만아니라 객체에서도 가능한데, 클래스 타입 변환은 상속관계에 있는 클래스 사이에서만 발생된다. 업캐스팅 업캐스팅이란 부모클래스의 참조변수가 자식 클래스의 객체의 주소를 받을 때, 객체의 클래스타입이 부모 클래스타입으로 형변환 되는 ..
클래스란 객체를 만들기 위한 설계도이며, 해당 객체의 특징을 블록에 변수와 메서드를 통해 표현한다. 그리고 클래스를 통해 객체를 생성하게 되면, 클래스로 구현한 특징들을 객체가 사용할 수 있게 된다. 이때, 같은 특징을 가지는 클래스를 생성하는 경우가 생기게 된다. 이럴 경우에 사용하는 기능이 상속 기능이다. 상속 상속이란 부모클래스(superclass)의 기능을 자식클래스(subclass)가 물려 받는 것으로, 부모클래스에서 작성한 기능을 사용하기 위해서 사용한다. 즉, 공통적인 특징을 매 객체마다 만드는 것이 아닌 공통적인 특징의 객체를 생성(추상화)하고 사용하기 위해서 상속을 사용한다. 부모 클래스는 자식클래스를 선언할 때, extends를 이용해서 다음과 같은 구조로 선언한다. class 클래스명..
클래스를 통해 객체를 생성할 때, new연산자를 통해 힙 영역에 객체를 생성하고, 해당 객체의 주소를 참조변수에 저장을 한다. 클래스명 참조변수 = new 클래스명(); 이때 new 클래스명()에서 new연산자는 객체를 생성하는 역할을 한다. 그렇다면 "클래스명()"는 무슨 역할을 하는 것일까? 생성자 "클래스명( )"은 객체의 초기값을 하는 생성자이다. 생성자란 객체 생성시 초기화를 담당하는 역할로, new연산자를 통해 생성자의 블록의 내용를 호출한다. 즉, 생성자의 블록에 값을 저장하는 명령어가 있을 경우, 해당 값으로 변수를 초기화하며, 메서드가 있을경우, 객체를 사용하기 전에 메서드를 호출한다. 기본 생성자 모든 클래스는 생성자가 반드시 필요하다. 하지만 클래스를 선언할 때 생략을 하는 경우가 있..
객체는 클래스를 통해 특징이 있는 존재나 개념을 변수나 메서드 등으로 구현해서 만든 대상으로, 참조변수를 만든 뒤, new연산자를 통해 객체를 생성해서 참조변수에 해당 객체의 주소를 저장해서 객체를 호출한다. 클래스명 참조변수 = new 클래스명(); 그리고 객체도 클래스를 통해 여러 개 만들 수 있는데, 이때 만들어진 객체들은 같은 특징을 가지지만 서로 다른 객체가 된다. class Aclass{ int x; void fun1() { System.out.println(x); } } package project0411; public class Code1 { public static void main(String[] args) { Aclass a1 = new Aclass(); Aclass a2 = new ..