2018. 11. 27. 22:45ㆍIT/JAVA
7강
s.equals("안“);
“안”.equals(s);
Date0
new Date().getTime(); // 이것 자체가 객체이다.
String s = new String(); // 객체이다.
중간고사
1번문제 : 생성자를 이해하는가 문제
1. 클래스이름과 같다
2. 반환형을 가지지 않는다.
class Welcome { String s=null;
public Welcome(String s) { this.s = s; }
public void print() { System.out.println(s); } } |
2번문제 : 객체지향프로그래밍의 맛을 보여준 문제
import java.util.*; class Coin { private String face;
public String flip() { Random rand = new Random(); if(rand.nextInt(2) == 0) { face = "앞면"; } else { face = "뒷면"; }
retrun face; } }
public class CoinFlip { public static void main(String args[]) { Coin c = new Coin(); System.out.println(c.flip()); } } |
* 공부를 왜 못하는가? 그것은 자신이 없어서 이다. 자신이 없다 이것은 커다란 장애이다. 자신감이 없어 문제를 제대로 읽지 않는 것이 공부를 못하는 것이다. 예를 들어 교수님이 질문을 했을 때 질문을 생각하고 표현을 해라. 대답을 했을 때 맞는것과 틀린 것 둘중에 하나 나타날 것이다. 맞췄으면 자신감이 더 생길것이고 틀리면 그 문제가 더 각인되어 더 오래 기록될 것이다.
느낌으로 문제를 풀지마라. 예를 들면 A는 B다 그러면 B다.
표면적으로 느껴지는것만으로 판단하지 말고, 그것을 보고 생각을 하라.
private는 맴버변수 | 원칙이다. |
public는 맴버메소드 |
private는 맴버변수로 하고 맴버메소드로 통하여 맴버변수를 컨트롤하는 것이 클래스의 원칙임.
* 배우는데 있어서는 모르는게 있으면 주저하지말고 물어봐라. 아는척하면서 앉아있으면 아무것도 얻지 못한다.
‘this.변수’는 객체의 맴버변수를 가리킨다.
객체의 배열을 만들때는 2단계를 거친다.
1. 객체의 배열을 만들고 ( Dog[] dog = new Dog[3]; )
2. Dog객체를 쓸 수 있는 이름만 만든것이므로 객체는 없다. 그러므로 객체를 만들어야 한다.
dog[0] = new Dog("쫑쫑이“,”불독“);
dog[1] = new Dog(“워리”,“똥개”);
dog[2] = new Dog("개똥이“,”진도개“);
메소드를 다시 생각한다.
- 메소드는 C언어의 함수와 유사한 것으로 인수와 반환값을 가지고 있다.
- 메소드는 클래스 내에서 정의되어야 한다.
- 정의된 메소드는 다른 메소드에서 호출하여 사용할 수 있다.
새가 먹이들을 먹고 내장에서 음식을 처리한다음 새가 앉았던 자리에 알을 낳는다.
static을 사용하면 컴파일시 미리 생성된다.
static에서 클래스에서 사용을 할려면 static이여야 한다.
main이 static이기 때문에....
러시안 루울렛
권총을 만들어라. => Revolver
맴버변수는?
메소드는?
메인클래스 이름은 RussianRoulette
import java.util.*; import java.io.*;
class Revolver { private int [] a = new int[6];
public void mixing() { Random rand = new Random(); a[rand.nextInt(6)]=1; }
public int shooting(int i) { return a[i]; } }
class RussianRoulette { public static void main(String args[]) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Revolver r = new Revolver(); r.mixing();
for(int i=0;i<6;i++) { if(i%2 == 0) { System.out.println(i+1+"번째 사격입니다. 컴퓨터가 쏩니다."); try { Thread.sleep(2000); } catch (Exception e) {} if(r.shooting(i)==0) { System.out.println("아~~이런 컴퓨터가 안죽었네요~~"+"\n"); } else { System.out.println("탕! 축하합니다. 컴퓨터가 죽었습니다."); System.exit(0); } } else { System.out.print(i+1+"번째 사격입니다. 쏘세요 [Enter]"); try { br.readLine(); } catch (IOException e) {} try { Thread.sleep(2000); } catch (Exception e) {}
if(r.shooting(i)==0) { System.out.println("짤깍! 다행입니다. 아직 살았습니다."+"\n"); } else { System.out.println("탕! 명복을 빕니다."); System.exit(0); } } } } } |
실제동작 | 구현 |
총알넣고 한번 돌린다 | 탄창배열의 임의의 위치에 총알있음 표시 |
발산한다 (총알 나감 or 안나감) | 발살될 위치에 총알이 있으면 true, 없으면 false를 반환. 발사위치의 증가도 필요. |
다른 교대방법
boolean turn = true;
for(int i=0;;) { if(turn) { 내가하는내용; !turn; } else { Computer; !turn; } } |
교수님 프로그램
import java.util.*;
class Revolver { private boolean magazine[] = new boolean[6]; private int current=-1;
public Revolver() { for(int i=0;i<6;i++) { magazine[i] = false; } Random r = new Random(); magazine[r.nextInt(6)]=true; }
public boolean fire() { current++; return magazine[current]; } }
class RussianRoulette { public static void main(String args[]) { Revolver gun = new Revolver(); boolean life=true;
for(int i=0;i<6 && life;i++) {
if(gun.fire()) { System.out.println("너 죽었어"); life = false; } else { System.out.println("살았군"); }
} } } |
상속의 개요
상속이란 소프트웨어 개발자로 하여금 원래 가지고 있는 클래스로부터 새로운 클래스를 만들 수 있도록 해주는 것
==> 클래스를 이용하여 더 확장된 클래스를 만들어진 것.(청출어람)
원래 존재하는 클래스는 부모클래스/슈퍼클래스(parent class/ superclas) 또는 상위클래스라고 부른다.
상속으로 만들어진 클래스는 자식 클래스(child class) 또는 서브클래스(subclass)라고 부른다.
==> 서브클래스는 상속된 클래스만을 서브클래스를 말한다.
서브클래스는 슈퍼클래스 보다 더 구체적인 클래스가 된다. ==> 내용이 더 풍부해진다.
부모클래스 + 추가된내용(맴버변수나 메소드) = 자식클래스
[접근 제어자] class 클래스 이름 extends 상위 클래스 { 멤버 변수; // 추가된 맴버변수 생성자; 멤버 메서드; // 추가된 메소드 } |
class A { int i; private int j; // private는 상속이 안된다.
void setij(int x, int y) { I=x; j=y; } }
class B extends A { int total; void sum() { totail=i+j; } } |
class A { int x; }
class B extends A { String x; }
class Inheritance2 { public static void main(String[] args) { B b = new B(); b.x = "하하"; // a.x인지 b.x인지는 고르기 곤란한데 자바컴파일러는 b.x를 선택한다.(int형을 -> String형으로 바꿨다 : Override) System.out.println(b.x);
A a = new A(); b.x = 5000; System.out.println(a.x); } } |
'IT > JAVA' 카테고리의 다른 글
[자바기초] 중간고사: 문제 해결 능력 기르기 (0) | 2021.03.22 |
---|---|
[자바기초] 객체 설계하기 연습문제 (0) | 2021.03.21 |
자바 6강 - 객체지향과 절차지향의 차이, 접근자, 클래스, 객체 (0) | 2018.11.27 |
자바 5강 - switch, for, 배열 (0) | 2018.11.27 |
자바4강 - if문, while문, 비교연산자 (0) | 2018.11.11 |
자바3강 - 기초문법 (0) | 2018.11.10 |
자바 2강 - 접근제한자, 데이터형 (0) | 2018.11.10 |
자바 1강 - '안녕하세요?' 출력하기 (0) | 2018.11.10 |