[OOP] 다형성에 대해서
·
Java/OOP
다형성이란 무엇일까?  다형성은 (Polymorphism)으로 객체지향 프로그래밍에서 같은 이름의 메서드나 연산자가 다른 기능을 수행하는 것이다.  다형성은 개념이 매우 중요한 기술적 부분인 것 같다. 꾸준히 다시 복습해야 다형성을 완전히 이해할 수 있을 것 같다.   다형성으로 다양한 형태, 여러 형태를 지닐 수 있게 되며 다형성 덕분에 하나의 객체가 다른 타입으로 사용될 수 있다.    다형성의 핵심 이론은 크게 2가지이다.  1. 다형적 참조  2. 메서드 오버라이딩    1. 다형적 참조   다형적 참조를 공부하기 전 상속에 대해서 간략하게 공부해야 한다.   다형적 참조는 말 그대로 참조를 다양하게 할 수 있는 것이다. 하나에 국한되어 있지 않다 이 말이다.  예제 코드를 보면 다형적 참조를 이..
[OOP] 캡슐화 Encapsulation
·
Java/OOP
OOP의 큰 특징은 크게 4가지이다.  그중 캡슐화에 대해 자세히 알아보자.  캡슐화 (Encapsulation)   캡슐화는 자바 OOP의 핵심 개념 중 하나이다. 프로그래밍 패러다임중 하나이며  캡슐화는 데이터를 보호하는 원칙이다.  데이터를 외부로부터 숨기고 데이터를 조작하는 기능(메서드)은 무결성을 유지한다.  캡슐화를 통해 데이터를 직접 접근하고 변경을 방지하거나 제한할 수 있다.  캡슐화는 속성과 기능을 하나로 묶고, 외부에서 꼭 필요한 데이터만 노출시키고 나머지는 내부에 감추는 목적이다.  캡슐화의 특징1. 데이터 은닉  클래스 필드(멤버변수)의 접근제어자를 private로 설정하여 외부로부터 접근 못하게 한다. 2. 정보 은폐  클래스 내부의 세부 구현을 알필요가 없어진다. 제공된 메서드만..
[Java] 변수(지역, 인스턴스, 클래스)
·
Java/OOP
선언위치에 따른 변수의 종류    인스턴스 변수   각 인스턴스의 개별적인 저장공간 인스턴스마다 다른 값 저장이 가능하다.  인스턴스 생성 후 '참조변수. 인스턴스변수명'으로 접근  인스턴스를 생설할 때 생성되고, 참조 변수가 없을 때 가비지컬렉터에 의해 자동제거됨.  클래스 변수   같은 클래스에서 공유하는 변수이다. 즉, 같은 클래스의 모든 인스턴스들이 공유하는 변수.  인스턴스 생성없이 '클래스이름. 클래스변수명'으로 접근할 수 있다.  클래스가 로딩될 때 생성되고 프로그램 종료될 때 소멸한다. 지역 변수  메서드 내에 선언되며, 메서드의 종료와 함께 소멸한다. 메서드뿐만 아니라 반복문내의 변수들도 지역변수이다.  조건문, 반복문의 블럭{} 내에 선언된 지역변수는 블럭을 벗어나면 소멸한다.    인..
절차 지향 프로그래밍VS객체 지향 프로그래밍
·
Java/OOP
절차 지향 프로그래밍과 객체 지향 프로그래밍에 대해 정리해보겠다.  Java는 대표적인 객체 지향 프로그래밍 언어중 하나이다. Java가 탄생하기 이전 다른 컴퓨터 언어들은 객체 지향이 아닌 절차 지향 언어가 많았다. 절차지향 프로그래밍은 순차적인 처리 프로그램이다.절치지향 대표 언어는 C언어이다. 절차지향 프로그래밍은 컴퓨터의 처리구조와 유사해 처리속도가 빠르다. C언어같은 저급언어(컴퓨터 친화적 언어)가 속도가 빠른 이유중 하나가 절차 지향이기도 하다.   절차지향(Procedural Programming) 프로그래밍 패러다임의 일종으로서 명령형 프로그래밍과 동의어로 쓴다. 특징프로그램 구조: 프로그램을 단계적으로 해결해야 할 절차나 함수로 나눔데이터와 함수의 분리: 데이터를 저장하는 구조와 이를 조..
[Java] Argument로 참조값을 보내면?
·
Java/OOP
**대원칙: 자바는 항상 변수의 값을 복사해서 대입한다.  (김영한 강의 중) 저 대원칙을 꼭 기억하고 계속 생각하자.    public class MethodChange { public static void main(String[] args) { DataA dataA = new DataA(); dataA.value = 10; System.out.println("메서드 호출 전 dataA의 값 = "+dataA.value); changeValueMethod(dataA); System.out.println("메서드 호출 후 dataA의 값 = "+dataA.value); } static void changeValueMethod(..
[Java] 기본형vs참조형
·
Java/OOP
기본형 vs참조형  자바는 데이터 타입을 크게 기본형과 참조형으로 분류할 수 있다.  기본형(Primitive Type): int, long, double, boolean처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라고 한다.참조형(Reference Type): Car c, Account user, Student[] students와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형이라고 한다. 참조형은 객체 또는 배열에서 사용된다.  다시 말해, 기본형은 변수에 사용할 값(숫자, true, false 등)을 직접 넣을 수 있는 타입을 기본형이라 하고 데이터에 접근하기 위한 주소를 가지고 있는 타입을 참조형이라 한다. 참조형 변수는 데이터 값에 바로 접근하는 ..
[Java] 객체 배열
·
Java/OOP
Tv 클래스를 만들었다 치자.  Tv t1 = new Tv(); t1.modelCode = "57R-V"; t1.price = 890_000; t1.userScore = 3.8; Tv t2 = new Tv(); t2.modelCode = "99SO-8"; t2.price = 1_890_000; t2.userScore = 5.0;  t1, t2 둘 다 같은 클래스 Tv 클래스를 사용했지만, 객체는 다르다.  Tv지만 Tv의 종류는 다양한 것처럼 코드에서도 t1과 t2는 다른 객체이다.    만약 t1이 참조하는 인스턴스의 모든 멤버 변수와 t2의 모든 멤버 변수를 출력해야 한다면 어떻게 할까?  Tv t1 ..