// 열혈자바 내용
// 출처 : https://leesteady.tistory.com/36
형이 많다. (many formas)
상속 관계에서 서로 관련된 많은 클래스들이 있을 때 '다형성'이라고 말한다.
객체 지향 프로그래밍OOP(Object-Oriented Programming)의 핵심 개념 중 하나
is-a 의 상속 관계라면 그 객체는 다형성이다.
객체에 접근하는 유일한 방법이 참조 변수를 통한 것이기 때문에 가능함
polymorphism(다형성)의 활용 방법:
가상 메소드 호출(virtual method invocation)
부모 = 자식 (wihtout 형변환)부모 클래스 타입(참조형)으로
자식 클래스의 객체를 생성할 수 있다.
기본적으로 반대의 경우는 안됨(나중에 되는 케이스를 배우긴 한다...)
SmartPhone ph2 = new MobilePhone();
- 클래스 :
Employee(직원)은 클래스 Regular(정규직)와 Temporary(비정규직)의 상위 클래스
- 필드: 이름, 나이, 주소, 부서, 월급 정보를 필드로 선언
- 생성자 : 이름, 나이, 주소, 부서를 지정하는 생성자 정의
- 메소드 printInfo() : 인자는 없고 자신의 필드 이름, 나이, 주소, 부서를 출력
클래스 Regular는 위에서 구현된 클래스 Employee의 하위 클래스
생성자 : 이름, 나이, 주소, 부서를 지정하는 상위 생성자 호출
Setter : 월급 정보 필드를 지정
메소드 printInfo() : 인자는 없고 "정규직"이라는 정보와 월급을 출력
class Employee {
String name;
int age;
String addr;
String dept;
int salary;
public Employee(String name, int age, String addr, String dept) {
this.name = name;
this.age = age;
this.addr = addr;
this.dept = dept;
}
public void printInfo() {
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
System.out.println("주소 : " + addr);
System.out.println("부서 : " + dept);
}
}
class Regular extends Employee{
public Regular(String name, int age, String addr, String dept) {
super(name, age, addr, dept);
}
public void setSalary(int salary){
super.salary = salary;
}
public void printInfo() {
super.printInfo();
System.out.println("정규직");
System.out.println("월급 : " + super.salary);
}
}
class Temporary extends Employee{
int workHour;
// int timepay = 10000;
// 이렇게 지정해도 됨.
int timePay;
public Temporary(String name, int age, String addr, String dept) {
super(name, age, addr, dept);
timePay = 10000;
}
public void setWorkHours(int workHour) {
this.workHour = workHour; // 일 한 시간을지정하면서
this.salary = workHour * this.timePay;
// 일 한 시간 * 시간당 보수로 계산하여 저장.
// this.timePay로 써도 되고 그냥 timePay로 써도 되고.
}
public void printInfo() {
super.printInfo();
System.out.println("비정규직");
System.out.println("일한시간" + workHour);
System.out.println("급여" + salary);
}
}
public class EmployeeExtends {
public static void main(String[] args) {
Employee employee = new Employee
("홍길동", 19, "서울 뉴욕시", "개발 1팀");
employee.printInfo();
System.out.println();
Regular kim = new Regular
("김길동", 19, "서울 뉴욕시", "개발 1팀");
kim.setSalary(10000);
kim.printInfo();
System.out.println();
Temporary t = new Temporary
("장보고", 25, "인천", "경리부");
t.setWorkHours(120);
t.printInfo();
}
}
두 사람이 게임을 진행한다.
이들의 이름을 키보드로 입력 받으며 각 사람은 Person 클래스로 작성하라.
그러므로 프로그램에는 2개의 Person 객체가 생성되어야 한다.
두 사람은 번갈아 가면서 게임을 진행하는데
각 사람이 자기 차례에서 <Enter> 키를 입력하면,
3개의 난수가 발생되고 이 숫자가 모두 같으면 승자가 되고 게임이 끝난다.
난수의 범위를 너무 크게 잡으면 3개의 숫자가 일치하게 나올 가능성이 적기 때문에
숫자의 범위는 1~3까지로 한다.
========================================================================
1번째 선수 이름>>수희
2번째 선수 이름>>연수
[수희]:
3 1 1 아쉽군요!
[연수]:
3 1 3 아쉽군요!
[수희]:
2 2 1 아쉽군요!
[연수]:
1 1 2 아쉽군요!
[수희]:
3 3 3 수희님이 이겼습니다
import java.util.Scanner;
class Random{
int[] arr = new int[3];
public void Random() {
for(int i = 0;i<arr.length;i++) {
arr[i] = (int) ((Math.random() * 3) + 1);
System.out.print(arr[i] + " ");
}
}
}
public class Gamble {
public static void main(String[] args) {
String p1, p2;
Scanner sc = new Scanner(System.in);
System.out.print("Player1의 이름 : ");
p1 = sc.nextLine();
System.out.print("Player2의 이름 : ");
p2 = sc.nextLine();
Random rd = new Random();
rd.Random();
}
}
제가 할 수 있는건 여기까지예요.... 플레이어 이름 입력받고 배열 랜덤으로 나오게 하기.................. If나 이런거 써서 아쉽군요를 띄우는건가? 싶은데 엔터 눌러서 반복시키고 하는걸 모르겠는데숭..... 왜 A B C 알려주다가 갑자기 저멀리꺼 하라 그러세요 😢