2020-12-01 인터페이스는 자바에서의 다형성을 실현하기 위해 객체의 교환성을 높여주는 역할을 한다. 선언 방법으로는 아래와 같이 New -> Interface를 선택해서 간단히 생성할 수 있다. 인터페이스의 특징으로는 상수와 메소드만 선언 가능하며, 생성자를 가질 수 없다. 또한 메서드는 추상 메서드 / 정적 메서드 / 디폴트 메서드 3가지 종류로 나누어진다. 이 중에서 추상 메서드를 사용하려면, 이를 구현하는 구현 클래스가 따로 필요하다.(위의 인터페이스는 추상 메서드 2개를 선언해 두었다.) 아래는 구현 클래스에 대한 내용이다. package interfacePractice; public class move implements arm1, arm2, body{ // 구현하는 모든 인터페이스의 추상..
2020-11-28 상속 : 현실세계에서는 부모의 재산을 자식이 물려받는 뜻으로 쓰이고는 한다. 자바에서도 그 의미가 크게 다르지 않는데, 한 번 알아보도록 하자. 자바에서의 상속은 부모 클래스의 멤버(필드, 메서드)를 자식 클래스가 상속받아 그대로 사용할 수 있다. (다만 상속 시 부모 클래스에서 private 접근 제한을 갖는 필드와 메서드는 상속이 이루어지지 않는다.) 아래 코드를 살펴보자. package Family상속; public class parent { String name; int age; parent(String name, int age){ this.name = name; this.age = age; } void info(){ System.out.println("저의 이름은 " + na..
2020-11-24 오늘은 자바라는 언어의 가장 큰 특징 객체지향 중 Getter/Setter에 대하여 알아보도록 하겠다. 우선 해당 메서드를 사용하는 이유는 필드 값에 부적절한 값이 대입되는 것을 막기 위해서이다. (물론 각 객체들의 캡슐이 깨지지 않게 하기 위함도 있다.) 글로만 봐서는 이해가 어려울 수 있으니 바로 코드를 통한 예제를 보면서 이해해 보도록 하자. 예를 들어 한 명의 게임 캐릭터가 있다. 해당 캐릭터의 힘 / 민첩 / 지능을 스탯을 배분해야 하며, 스탯은 0부터 시작하기 때문에 - 값은 들어갈 수 없다고 가정해보자. 이러한 경우 실수로 - 값을 대입할 경우, 차후 캐릭터에 문제가 생겨 버그가 발생할 수 있다. 때문에 스텟(필드)은 private로 직접적인 접근을 할 수 없도록 막고, ..
2020-11-22 접근 제한자의 종류는 4가지가 있다. public / protected / default / private이다. 이는 라이브러리 클래스 설계 시 외부(다른) 클래스에서 접근 가능/불가능 여부에 따라 필드, 생성자, 메서드를 설계하기 위해 사용된다. 오늘은 해당 내용에 대하여 알아보도록 하자. public : public 은 메인 클래스에서의 접근 제한자이며, 이름에서도 느껴지듯이 접근할 수 없는 클래스에 제한이 없고, public을 적용할 수 있는 대상으로는 클래스 , 필드 , 생성자, 메서드 모두 가능하다. protected : protected의 경우 상속이라는 개념과도 연관이 있는데, public와 달리 자식 클래스가 아닌 외부(다른) 패키지의 클래스는 접근을 할 수 없다. 또한..
2020-11-21 final 이름에서도 느껴지듯이 자바에서 final이 선언된 값은 프로그램 실행 도중 변경을 할 수 없다. 때문에 초기화 준 값에서 바뀌지 않는다는 것인데, 초기화 방법을 알아보자. public class tFinal { final String name = "홍길동"; //필드에서 초기화 하는 방법 final String bloodType; public tFinal(String bloodType) { this.bloodType = bloodType; } //생성자에서 초기화 하는 방법 } 위의 코드에서 볼 수 있듯이 final 을 초기화하는 방법은 필드와 생성자를 통해서만 초기화할 수 있다. 단순한 값이라면 필드에서 선언하는 것이 좋으며, 외부에서 입력받아야만 하는 값이라면, 생성자를..
2020-11-19 다수의 Overloading을 하다 보면 반복적인 this 코드를 사용하게 되는데, 이러한 불필요한 반복을 줄이는 방법을 알아보자. (예제는 전에 오버 로딩 글에서 사용하던 걸 사용하도록 하겠다.) 오버 로딩 글 링크 : seeminglyjs.tistory.com/167 public class Overloading { String name; String sex; int age; public Overloading() { } public Overloading(String name) { this.name = name; } //이름 매개변수를 받는 생성자 public Overloading(String name, String sex) { this.name = name; this.sex = se..