본문 바로가기

전체 글

[Day13] Summary5 Main package summary5; public class Main { // 다음 메인함수의 내용이 잘 작동하도록 클래스를 구성하세요 // Human.give 메서드를 하나로 통합합니다 // 서로 다른 클래스를 하나의 타입으로 처리하기 위해 // 인터페이스 Companion 을 만들어서 처리합니다 (Cat, Dog, Friend) public static void main(String[] args) { Human man = new Human("원빈"); Cat cat = new Cat("나옹이"); Dog dog = new Dog("바둑이"); Friend f = new Friend("이정재"); man.give(cat);// 원빈이 나옹이에게 츄르를 (던져)준다 man.give(dog);// 원빈.. 더보기
[Day13] Summary4 Main package summary4; public class Main { // 다음 메인함수의 내용이 잘 작동하도록 클래스를 구성하세요 // Human을 상속받는 클래스 Friend 를 작성하세요 // Animal을 전달받는 give와 Human을 전달받는 give로 오버로딩하세요 public static void main(String[] args) { Human man = new Human("원빈"); Cat cat = new Cat("나옹이"); Dog dog = new Dog("바둑이"); Friend f = new Friend("이정재"); man.give(cat);// 원빈이 나옹이에게 츄르를 준다 man.give(dog);// 원빈이 바둑이에게 육포를 준다 man.give(f); // 원빈.. 더보기
[Day13] Summary3 Main package summary3; public class Main { // 다음 메인함수의 내용이 잘 작동하도록 클래스를 구성하세요 // give메서드에서 Animal타입의 객체를 전달받았을때 // 만약 그 객체가 Cat의 인스턴스라면 츄르를 주게 하고, // 만약 그 객체가 Dog의 인스턴스라면 육포를 주게 변경하세요 // (instanceof) public static void main(String[] args) { Human man = new Human("원빈"); Cat cat = new Cat("나옹이"); Dog dog = new Dog("바둑이"); man.give(cat);// 원빈이 나옹이에게 먹이를 준다 man.give(dog);// 원빈이 바둑이에게 먹이를 준다 } } Huma.. 더보기
[Day13] Summary2 Main package summary2; public class Main { // 다음 메인함수의 내용이 잘 작동하도록 클래스를 구성하세요 // Cat과 Dog의 공통속성을 묶어서 처리할 슈퍼클래스 Animal을 작성하세요 // 필요하다면, 생성자를 수정하여 상속관계에 맞게 작동하도록 수정하세요 // Human에서는 나누어져있는 give메서드를 하나로 통일하세요 public static void main(String[] args) { Human man = new Human("원빈"); Cat cat = new Cat("나옹이"); Dog dog = new Dog("바둑이"); man.give(cat);// 원빈이 나옹이에게 먹이를 준다 man.give(dog);// 원빈이 바둑이에게 먹이를 준다 } } .. 더보기
[Day13] summary1 Main package summary1; public class Main { // 다음 메인함수의 내용이 잘 작동하도록 클래스를 구성하세요 // 상속을 사용하지 않고, 자바의 메서드 오버로딩(중복정의)을 활용하여 코드를 작성하세요 public static void main(String[] args) { Human man = new Human("원빈"); Cat cat = new Cat("나옹이"); Dog dog = new Dog("바둑이"); man.give(cat);// 원빈이 나옹이에게 먹이를 준다 man.give(dog);// 원빈이 바둑이에게 먹이를 준다 } } Human package summary1; public class Human { String name; Human(String name.. 더보기
[Day15] Ex06 package abstractClass; public class Ex06 { public static void main(String[] args) { Thread th1 = new Thread(() -> { for(int i = 0; i { for(char ch = 'A'; ch 더보기
[Day13] Ex05 package abstractClass; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.Random; public class Ex05 { public static void main(String[] args) { // ArrayList를 정렬하는 람다식 Random ran = new Random(); Integer[] arr = new Integer[10]; for(int i = 0; i < arr.length; i++) { arr[i] = ran.nextInt(arr.length * 10); } ArrayList list = new ArrayList(Arrays.asList(.. 더보기
[Day13] Ex04 package abstractClass; class PC { // PC는 USB타입의 장치를 연결할 수 있다 void connect(USB device) { device.onConnect();// 연결된 장치마다, 연결되었을 때 수행하는 동작이 있다 } // 만약 인터페이스를 사용하지 않았다면... 연결하고 싶은 장치의 개수만큼 함수 오버로딩을 수행해야 한다 // void connect(Keyboard device) { ... } // void connect(DataCable device) { ... } // void connect(ElectricFan device) { ... } } interface USB { /*public abstract*/ void onConnect(); } class Keybo.. 더보기
[Day13] Ex03 package abstractClass; class Button { String text; OnClickListner listener; public Button(String text) { this.text = text; } void click() {// 클릭하면 if(listener != null) {// 클릭했을 때 동작이 지정되어 있다면 listener.onClick();// 지정된 내용을 수행한다 } else { System.err.printf("%s : 클릭에 연결된 동작(기능, 함수)이 없습니다\n", text); } } void setOnClickListener(OnClickListner listener) { this.listener = listener; } public String toStr.. 더보기
[Day13] Ex02 package abstractClass; // 인터페이스 : 추상 클래스의 한 종류 // 일반적인 추상 클래스와는 달리, 일반 메서드를 포함할 수 없다 // 인터페이스의 모든 필드는 public static final 속성을 포함한다 // 인터페이스의 모든 메서드는 public abstract 속성을 포함한다 // 인터페이스는 extends 대신 implements 로 상속처리한다 // 인터페이스는 다중상속을 허용한다 interface Test3 { public static final int NUM1 = 10; public void method3(); } class Test4 implements Test3 { @Override public void method3() { System.out.println(.. 더보기
[Day13] Ex01 package abstractClass; // 추상 클래스는 일반 메서드도 포함할 수 있고, 추상 메서드도 포함할 수 있다 abstract class Test1 { int num1 = 10; int num2 = 20; public void method1() { System.out.println("method1"); } public abstract void method2();// { // 추상 메서드는 함수 내용을 가질 수 없다 //} } class Test2 extends Test1 { @Override public void method2() { System.out.println("Test2.method2"); } //The type Test2 must implement the inherited abst.. 더보기
[Day12] Ex04 package inheritance; class Animal { String name; public Animal(String name) { this.name = name; } void bark() { System.out.printf("%s : ...\n", name); } } class Cat extends Animal { public Cat(String name) { super(name); } // Cannot reduce the visibility of the inherited method from Animal @Override// 오버라이딩 할때, 접근제한자의 범위를 넓힐 수 있다 (좁힐 수는 없다) public void bark() { System.out.printf("%s : 야옹\n", nam.. 더보기