객체지향 6

[Java-07] 객체지향프로그래밍Ⅱ - 다형성, 추상클래스

1. 다형성(Polymorphism) 1) 다형성이란? - 객체지향개념의 중요한 특징 중 하나 - 객체지향 개념에서의 '다형성' : 여러 가지 형태를 가질 수 있는 능력 - 자바에서의 '다형성' : 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 하는 것 - 구체적으로, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하는 것 class Tv { boolean power; int channel; void power() { power = !power; } void channelUp() { ++channel; } void channelDown() {--channel; } } class CaptionTv extends Tv { String text; void caption() ..

공부/Java 2021.03.02

[Java-07] 객체지향프로그래밍Ⅱ - 패키지, import문, 제어자

1. 패키지(package) 1) 패키지(package) - 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음(패키지)으로써 클래스를 효율적으로 관리할 수 있음 - 클래스 또는 인터페이스를 포함시킬 수 있음 - 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용함 - 모든 클래스는 반드시 하나의 패키지에 속해야 함 - 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있음 - 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리임 2) 패키지의 선언 package 패키지명; - 대소문자를 모두 허용하지만 클래스명과 구분하기 위해 소문자로 하는 것을 원칙으로 함 - 이름없는 패키지(unnamed package) : 소스파일에 자신이 속할 패키지를 지정하지 않은 클..

공부/Java 2021.02.24

[Java-07] 객체지향프로그래밍Ⅱ - 상속, 오버라이딩

1. 상속(Inheritance) 1) 상속의 정의와 구현 - 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 - 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있음 - 코드의 추가 및 변경이 매우 용이함 - 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여함 - 상속은 키워드 'extends'를 사용하여 구현함 class Child extends Parent { ... } 조상 클래스 = 부모(parent)클래스, 상위(super)클래스, 기반(base)클래스 자손 클래스 = 자식(child)클래스, 하위(sub)클래스, 파생된(derived) 클래스 - 상속계층도(class hierarchy) : 클래스 간의 상속관계를 그..

공부/Java 2021.02.22

[Java-06] 객체지향프로그래밍 - 오버로딩, 생성자

1. 오버로딩(Overloading) 1) 오버로딩(overloading)이란? - 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것 - 메서드 오버로딩(method overloading)이라고도 함 2) 오버로딩의 조건 1. 메서드 이름이 같아야 함 2. 매개변수의 개수 또는 타입이 달라야 함 (반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 않음) 3) 오버로딩의 예 [ex1] PrintStream 클래스의 10개의 오버로딩된 println 메서드 void println() void println(boolean x) void println(char x) void println(char[] x) void println(double x) void println(float x) void pr..

공부/Java 2021.02.18

[Java-06] 객체지향프로그래밍 - 변수, 메서드

1. 변수(variable) - 변수의 선언된 위치에 따라 변수의 종류가 결정된다. 변수의 종류 선언위치 생성시기 인스턴스변수 (instance variable) 클래스 영역 인스턴스가 생성되었을 때 클래스변수 (class variable) 클래스가 메모리에 올라갈 때 지역변수 (local variable) 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) 변수 선언문이 수행되었을 때 class Variables { int tv;// 인스턴스변수 static int cv;// 클래스변수 (static변수, 공유변수) void method() { int lv = 0;// 지역변수 } } 1) 인스턴스변수(instatnce variable) - 클래스 영역에 선언, 클래스의 인스턴스를 생성할 ..

공부/Java 2021.02.17

[Java-06] 객체지향프로그래밍 - 클래스, 객체

1. 객체지향언어 "실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다." - 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수(메서드)로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같은 가상세계를 구현함 - 기존의 'FORTRAN', 'COBOL'과 같은 절차적 언어의 한계를 느끼고 객체지향언어를 이용한 개발방법론이 대안으로 떠오르게 되면서 객체지향언어는 프로그래밍언어의 주류로 자리 잡음 - 1960년대 중반 최초의 객체지향언어 '시뮬라(Simula)'를 시작으로 'C++', '자바(Java)'가 발표됨 객체지향언어의 특징 1. 코드의 재사용성이 높음 - 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있음 2. 코드의 관리가..

공부/Java 2021.02.16