Java 52

this(), 다른 생성자 호출

this(), 다른 생성자 호출 this()는 한 클래스 내의 한 생성자에서 다른 생성자를 호출할 때 사용하는 자바 코드이다. 한 클래스 내의 어떤 메소드가 다른 메소드를 호출할 수 있는 것처럼 생성자도 중복된 다른 생성자를 호출할 수 있다. this()는 동일한 클래스 내의 다른 생성자의 호출이다. i.e.public class Book {String title;String author;int ISBN; public Book(Stiring title, String author, int ISBN) {this.title = title;this.author = author;this.ISBN = ISBN;System.out.println("객체 생성!");} public Book (String title, i..

Java/Java 기본 2018.06.25

생성자

생성자 앞에서 클래스는 객체를 생성하기 위한 설계도 또는 틀이며 객체는 설계도 또는 틀로 찍어낸 실체라고 하였다. 생성자는 객체가 생성될 때 초기화를 위해 실행되는 메소드이다. 예를 들어, 얼굴이라는 클래스로 사람 객체를 만들어낼 수 있다. 그런데, 만약 생성자 없이 그냥 객체를 생성한다면 새롭게 생성된 사람 객체는 아무런 옷도, 화장도, 돈도 없는 그냥 맨몸의 사람이 된다. 그런데, 생성자를 통해서 필요한 멤버 변수 등을 초기화 시켜준다면, 옷도 입고 경우에 따라 악세사리나 화장도 한 사람 객체가 될 것이다. 또한 생성자를 호출하여 매개 변수등을 이용해서 키나 몸무게, 머리 색깔, 성격 등을 다르게 하게 되면 다른 특징을 가진 사람 객체를 생성할 수 있다. 1. 생성자 선언과 호출 생성자는 객체가 생성..

Java/Java 기본 2018.06.24

this 키워드

this this는 자바의 중요한 키워드로서 단어가 의미하는 데로 객체 자신을 가리킨다. (this는 객체 자신을 참조하는 키워드) 1. this의 기초 개념 자바에서 this는 현재 실행되는 메소드가 속한 객체에 대한 레퍼런스이다. this는 컴파일러에 의해 자동으로 생성되며 개발자는 별도로 this를 선언할 필요 없이 사용하기만 하면 된다. 다음 소스는 this를 사용하는 전형적인 예이다. i.e.class Samp {int id;public Samp(int x) {this.id = x;} public void set (int id) {this.id = id;} public int get() { return id;}} 이 소스에서 this는 현재 객체에 대한 레퍼런스이므로, this로 Samp 클래스..

Java/Java 기본 2018.06.23

메소드 오버로딩

메소드 오버로딩 오버로딩이란? -> 매개 변수의 유형과 개수가 다르게 하여 같은 이름의 메소드를 여러 개 가질 수 있게 하는 기술 자바에서는 한 클래스 내에 이름이 같지만 인자의 타입이나 개수가 서로 다른 여러 개의 메소드를 중복 작성할 수 있다. 이것을 메소드 오버로딩(method overloading) 혹은 메소드 중복이라고 부른다. 메소드 오버로딩은 객체 지향적 특징 중 다형성 의 한 종류이다. 여러 개의 모소드가 메소드 오버로딩으로 성립되려면 다음 세 조건을 모두 만족하여야 한다. 1) 메소드 이름이 동일하여야 한다. 2) 메소드 인자의 개수가 서로 다르거나, 메소드 인자의 타입이 서로 달라야 한다. (타입이 같고 매개 변수의 이름만 다르다고 해서 오버로딩이 되는 것이 아니다.) 3) 메소드의 이..

Java/Java 기본 2018.06.23

인자 전달

인자 전달 기본적으로, 자바의 메소드 호출 시 인자 전달 방식은 '값에 의한 호출 (call by value)'이다. 그러므로 호출하는 인자의 값이 복사되어 메소드의 인자에 전달된다. 1. 기본 타입이 인자로 전달되는 경우 (call by value) byte, char, short, int, long, float, double, boolean 등의 자바 기본 타입이 인자로 전달되는 경우에는 호출자(caller)가 건네는 인자의 값을 복사하여 메소드의 인자에 전달한다. 다음 예제 코드는 기본 타입의 값이 전달되는 사례이다. Person의 setAge()가 호출되면 인자 n이 생기며 이곳에 main()의 지역 변수 a의 값 33이 복사되어 넘어온다. setAge()에서 n의 값을 34로 증가시킨다. 그러나..

Java/Java 기본 2018.06.23

메소드 형식

메소드 형식 메소드는 클래스의 멤버 함수이므로 일반적인 함수 작성법과 동일하다. 자바에서 메소드는 다음과 같은 형식을 가진다. 접근_지정자 리턴_타입 메소드_이름 ( 메소드_인자들) {...메소드_코드...} 1) 접근 지정자 메소드를 선언할 때에는 접근 지정자를 선언하여야 한다. 접근 지정자는 public(클래스 내부/ 외부에서 모두 호출이 가능), private(클래스 내부 멤버들만 호출 가능), protected(클래스 내부 메소드들은 호출 가능하며, 다른 클래스 중 상속받은 서브 클래스만 호출 가능)가 있으며, 접근 지정자가 생략된 default 형태의 경우(아무 접근 지정자도 선언하지 않는 경우)에는 동일한 패키지 내의 모든 클래스가 호출 가능한 package private 상태가 된다. 2) ..

Java/Java 기본 2018.06.22

객체 배열

객체 배열 지금까지는 자바 기본 타입의 배열만 다루었다. 그러나 사실, 자바에서는 객체가 원소인 객체 배열도 만들 수 있다. 객체 배열이란 객체에 대한 레퍼런스를 원소로 갖는 배열이다. 이전 글에서 만들었었던 Person 클래스로 만든 Person 타입 객체로 이루어진 배열로 예시를 들어보도록 하자. i.e.Person[] pa; //객체 배열 레퍼런스 선언pa = new Person[20]; //객체 배열 생성 for (int i = 0; i < pa.length; i++) {pa[i] = new Person(); //객체 배열에 원소로 들어갈 객체 생성pa[i].age = 30 + i; //객체의 필드에 접근 (객체 배열의 경우 배열의 인덱스를 이용해서 원하는 객체에 접근 가능)} 객체 배열은 이전에..

Java/Java 기본 2018.06.22

클래스 선언과 활용

클래스 선언과 활용 1. 클래스와 객체 객체 지향 프로그래밍에서는 실제 세상의 물체들을 객체로 모델링한다고 하였다. 그렇다면 클래스는 객체와 어떻게 다른가? 클래스는 객체를 만들기 위한 설계도라고 보면 된다. 즉, 객체 지향 프로그래밍은 인터넷 세계 상에 자판기나 달력, 전화기등 어떠한 일을 하기 위해서 우리를 도와주는 객체를 만들고, 그 객체를 사용해서 주어진 임무를 완수하는 방식이라고 보면 된다. 이때, 이 객체들을 만들기 위해서는 설계도가 필요할 것이다. 예를 들어, 볼펜의 설계도를 통해서 철수와 영희에게 각각 볼펜을 만들어 준다고 생각해 보자. 같은 설계도를 통해서 만들어졌으니 두 볼펜의 종류는 같겠지만, 철수의 볼펜과 영희의 볼펜은 같은 볼펜이 아니다. 두 볼펜은 엄연하게 다른 객체이다. 그렇지..

Java/Java 기본 2018.06.22

객체 지향과 자바

객체 지향과 자바 1. 객체 지향 언어의 목적 객체 지향 언어 (Object Oriented Language)가 출현할 당시 가장 범용으로 사용되던 언어는 절차 지향 언어 (Structured Procedural Programming Language) 였다. 객체 지향 언어는 절차 지향 언어가 가진 단점을 보완하고 다음의 목적을 달성하기 위해 탄생하였다. 1) 소프트웨어의 생산성 향상컴퓨터 산업이 발전함에 따라 소프트웨어의 생명 주기(life cycle)가 짧아졌는데, 이는 어떤 제품이 기획되면 짧은 시간 내에 소프트웨어를 만들어야만 했기 때문이다. 객체 지향 언어는 상속, 다형성, 객체, 캡슐화 등 소프트웨어의 재사용을 위한 여러 장치를 내장하고 있다. 객체 지향 소프트웨어를 새로 만드는 경우, 이미 ..

Java/Java 기본 2018.06.21