class Main {
public static void main (String[] args) {
무기 무기1 = new 무기();
무기1. 공격();
칼 칼1 = new 칼();
칼1. 공격();
창 창1 = new 창();
창1. 공격();
활 활1 = new 활();
활1. 공격();
}
}
class 무기 {
void 공격() {
}
}
class 칼 extends 무기{
@Override
void 공격() {
System.out.println("칼로 공격합니다.");
}
}
class 창 extends 무기 {
@Override
void 공격() {
System.out.println("창으로 공격합니다.");
}
}
class 활 extends 무기 {
@Override
void 공격() {
System.out.println("활로 공격합니다.");
}
}
칼,창,활 클래스는 부모클래스인 무기에게 상속받은 자식클래스
상속받은 공격( ) 메서드를 자식클래스에서 재정의해서 사용
class Main {
public static void main (String[] args) {
무기 [] 무기들 = new 무기[3]; // 인덱스가 3개인 무기배열 생성
무기들[0] = new 칼(); // 칼객체 생성
무기들[1] = new 창(); // 창객체 생성
무기들[2] = new 활(); // 활객체 생성
for(int i = 0; i <무기들.length; i++) { // 0부터 무기배열의 길이-1까지 반복
무기들[i].공격(); // 각 i번째 객체의 배열 메서드 실행
}
}
}
class Main {
public static void main (String[] args) {
요리사 [] 요리 = new 요리사[3];
요리[0] = new 김치요리사();
요리[1] = new 된장요리사();
요리[2] = new 양식요리사();
String[] 요리들 = {"김치찌개", "된장찌개", "파스타"};
for (int i = 0; i < 요리.length; i ++) {
요리[i].요리하다(요리들[i]);
}
}
}
class 요리사 {
String 요리명;
void 요리하다(String 요리명){
System.out.println(요리명 + "을(를) 요리합니다.");
}
}
class 김치요리사 extends 요리사 {
}
class 된장요리사 extends 요리사 {
}
class 양식요리사 extends 요리사 {
}
class Main {
public static void main(String[] args) {
요리사 [] 요리 = new 요리사[3];
요리[0] = new 김치요리사();
요리[1] = new 된장요리사();
요리[2] = new 양식요리사();
요리[0].요리하다("파스타");
String [] 요리들 = {"김치찌개", "된장찌개", "파스타"};
for (int i = 0; i < 요리.length; i ++) {
요리[i].요리하다(요리들[i]);
}
}
}
class 요리사 {
String 요리명;
void 요리하다(String 요리명) {
System.out.println(요리명 + "을(를) 요리합니다.");
}
}
class 김치요리사 extends 요리사 {
@Override
void 요리하다(String 요리명) {
if (요리명.equals("김치찌개")) {
System.out.println("김치찌개를 요리합니다.");
} else {
System.out.println("해당 요리는 못 합니다.");
}
}
}
class 된장요리사 extends 요리사 {
@Override
void 요리하다(String 요리명) {
if (요리명.equals("된장찌개")) {
System.out.println("된장찌개를 요리합니다.");
} else {
System.out.println("해당 요리는 못 합니다.");
}
}
}
class 양식요리사 extends 요리사 {
@Override
void 요리하다(String 요리명) {
if (요리명.equals("파스타")) {
System.out.println("파스타를 요리합니다.");
} else {
System.out.println("해당 요리는 못 합니다.");
}
}
}
각 요리사들은 지정된 요리만 가능하며 못하는 요리가 오면 "해당 요리는 못 합니다"를
출력함
equals = 문자열이 같은지 비교할 때 사용되는 메서드임
if문에서 요리명.equals("파스타")는
입력한 요리명과 "파스타"가 같은지 비교해줌
문법 : if(문자열1.equals(문자열2))
- 로그인 프로그램
class Main {
public static void main(String[] args) {
String input_id = "jswook0422";
String input_pw = "123";
String id = "jswook0422";
String pw = "1234";
if(input_id.equals(id) && input_pw.equals(pw)) {
System.out.println("로그인 성공);
}
else {
System.out.println("로그인 실패);
}
}
}
class Main {
public static void main(String[] args) {
car a = new car("포르쉐");
car b = new car("테슬라");
}
}
class car {
String name;
// 생성자 (매개변수)
car(String name) {
this.name = name; // 좌측 name은 String name;, 우측 name은 매겨변수 String name
System.out.println("이 자동차의 이름은 " + name + "입니다.");
}
}
### super (부모클래스 접촉)
- 부모클래스와 관련된 기능에 접촉할 때 사용
- 부모클래스 생성자 호출 : super(값)
- 부모클래스 메서드 호출 : super.메서드()
```java
class Main {
public static void main(String[] args) {
동물 [] a = new 동물[2];
a[0] = new 개("바둑이");
a[1] = new 고양이("냐옹이");
for(int i = 0; i < a.length; i ++) {
a[i].소리내기();
}
}
}
class 동물 {
String name;
동물(String name) {
this.name = name;
}
void 소리내기() {
}
}
class 개 extends 동물 {
개(String name) {
super(name); // 부모클래스의 생성자 호출
}
@Override
void 소리내기() {
System.out.println(name + "이(가) 멍멍 짖습니다.");
}
}
class 고양이 extends 동물{
고양이(String name) {
super(name); // 부모클래스의 생성자 호출
}
@Override
void 소리내기 () {
System.out.println(name + "이(가) 야옹 울어요.");
}
}