[Java] 다형성
·
Language/Java
객체지향 프로그래밍의 특징 중에는 다형성(폴리모피즘, Polymorphism)이 있다. // Sample.java interface Predator { (... 생략 ...) } class Animal { (... 생략 ...) } class Tiger extends Animal implements Predator { (... 생략 ...) } class Lion extends Animal implements Predator { (... 생략 ...) } class ZooKeeper { (... 생략 ...) } class Bouncer { void barkAnimal(Animal animal) { if (animal instanceof Tiger) { System.out.println("어흥"); } ..
[Java] 인터페이스 (Interface)
·
Language/Java
인터페이스(Interface) 자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 것이다. 하지만 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않는다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이스라는 것을 통해 다중 상속을 지원하고 있다. 인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다. 자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있다. 하지만 인터페이스(interface..
[Java] 생성자 (Constructor)
·
Language/Java
생성자(Constructor) // Sample.java class Animal { String name; void setName(String name) { this.name = name; } } class Dog extends Animal { void sleep() { System.out.println(this.name + " zzz"); } } class HouseDog extends Dog { void sleep() { System.out.println(this.name + " zzz in house"); } void sleep(int hour) { System.out.println(this.name + " zzz in house for " + hour + " hours"); } } public c..
[Java] 상속
·
Language/Java
자바에는 자식 클래스가 부모 클래스의 기능을 그대로 물려받을 수 있는 상속(Inheritance) 기능이 있다. 상속 Animal 클래스를 상속하는 Dog 클래스를 만든다. class Animal { String name; void setName(String name) { this.name = name; } } class Dog extends Animal { } public class Sample { public static void main(String[] args) { Dog dog = new Dog(); dog.setName("poppy"); System.out.println(dog.name); // poppy 출력 } } 클래스 상속을 위해서는 extends 라는 키워드를 사용한다. 이제 Dog ..
[Java] Call by value
·
Language/Java
메소드에 값(primitive type)을 전달하는 것과 객체(reference type)를 전달하는 것에는 큰 차이가 있다 메소드에 객체를 전달할 경우 메소드에서 객체의 객체변수(속성) 값을 변경할 수 있다. class Updater { void update(int count) { count++; } } class Counter { int count = 0; // 객체변수 } public class Sample { public static void main(String[] args) { Counter myCounter = new Counter(); System.out.println("before update:"+myCounter.count); Updater myUpdater = new Updater()..
[Java] 메소드 (Method)
·
Language/Java
다른 프로그래밍 언어에는 함수라는 것이 별도로 존재한다. 하지만 자바는 클래스를 떠나 존재하는 것은 있을 수 없기 때문에 자바의 함수는 따로 존재하지 않고 클래스 내에 존재한다. 자바는 이러한 클래스 내의 함수를 메소드라고 부른다. ※ 보통 함수와 메소드가 공존하는 언어(예 : 파이썬)에서는 두 개를 구분하여 말하기도 하지만 자바는 보통 메소드와 함수를 구분하여 말하지 않는다. 다만 자바에서 사용되는 함수의 정확한 명칭은 메소드이다. 메소드를 사용하는 이유 가끔 프로그래밍을 하다 보면 똑같은 내용을 자신이 반복해서 적고 있는 것을 발견할 때가 있다. 이 때가 바로 메소드가 필요한때이다. 여러 번 반복해서 사용된다는 것은 언제고 또다시 사용할 만한 가치가 있는 부분이라는 뜻이다. 즉, 이러한 경우 이것을 ..