본문 바로가기

웹_프론트_백엔드/JAVA

(40)
2020.02.25 ** Bus 클래스 ** package transportation; import java.util.Random; import javax.swing.JOptionPane; public class Bus implements TransportationMark{ // private 필드는 다른 클래스에서 접근할 수 없으므로 // public getter와 setter를 만들어 주어야 한다. // 따라서 외부에서 private필드에 접근하기 위해서는 // getter, setter를 사용하거나 생성자로 접근한다. private String[] stops; private String num; public final int FEE = 1250; public int depart_idx; public Bus() { } ..
2020.02.24 ** Bus 클래스 ** package transportation; import java.util.Random; import javax.swing.JOptionPane; public class Bus implements TransportationMark{ // private 필드는 다른 클래스에서 접근할 수 없으므로 // public getter와 setter를 만들어 주어야 한다. // 따라서 외부에서 private필드에 접근하기 위해서는 // getter, setter를 사용하거나 생성자로 접근한다. private String[] stops; private String num; public final int FEE = 1250; public int depart_idx; public Bus() { } ..
2020.02.21 1) Bus 정류장이 5개가 있고, 정방향으로만 갈 수 있다. 정류장 한 개당 1초가 걸리고 출발지는 랜덤이다. 출발지는 마지막 정류장이 될 수 없고 도착지는 출발지보다 앞에 있는 정류장을 선택할 수 없다. 교통비는 1250이다. 경로를 각각 출력한다. 출력 예) 서초 > 교대 > 강남 > 도착 2) Subway 정류장이 7개가 있고, 역방향도 갈 수 있다. 정류장 한 개당 2초가 걸리고 출발지는 랜덤이다. 교통비는 1250이다. 경로를 각각 출력한다. 출력 예) 강남 > 교대 > 서초 > 도착 출력 예) 서초 > 교대 > 강남 > 도착 3) Taxi 도착지를 입력받고 랜덤한 km로 진행된다. 1~10km사이의 값으로 나오고 기본요금은 3800원 km당 1200원씩 부여된다. 1km당 0.5초가 걸린다...
2020.02.20 1. 마크 인터페이스(=마커 인터페이스) : 공통된 클래스들을 하나로 묶어주는 기능(그룹화) 영역 안에는 비워놓는다. 2. 다중 상속 : jdk8버전부터는 다중 상속이 사실상 지원된다. 인터페이스에서 바디가 있는 메소드를 선언할 수 있기 때문이다. ** 인터페이스의 다중 지정을 통해 다중 상속이 된다고 보면 된다. 3. 다중 지정에서 발생하는 모호성 해결방법 1) 2개의 인터페이스에 같은 이름의 메소드가 있다면 지정받은 클래스에서 반드시 재정의하고 사용한다. 2) 부모 클래스와 부모 인터페이스에 같은 이름의 메소드가 있다면 부모 클래스에 있는 메소드가 사용된다. 4. 오늘 실습코드 1) 인터페이스 예제 ** Soldier 인터페이스 ** package inter; public interface Soldi..
2020.02.19 1. Data영역 1) 전역변수 : new로 필드에 올라가고 new로 초기화 된다. 객체별로 하나씩 존재한다. 공유하지 않는다. 2) static변수 : 컴파일러가 올려주고 new로 초기화되지 않는다. 단 한 개만 존재하기 때문에 모든 객체가 공유한다. 2. 접근권한 제어자 1) default : 다른 패키지에서 접근 불가(자식도 불가능) 2) public : 모든 패키지에서 접근 가능 3) protected : 다른 패키지에서 접근 불가(자식은 가능) 4) private : 다른 클래스에서 접근 불가 3. 추상 클래스 : 클래스 내에 메소드를 선언할 때, {}(바디)없이 선언한다면 추상적인 개념이라 할 수 있고, 자식 클래스에는 반드시 재정의 해주어야 한다. 따라서 이런 메소드를 추상메소드라고 하며, ..
2020.02.18 1. instanceof : 객체의 타입 비교 객체 instanceof 클래스타입 "안녕" instanceof String : true 10 instanceof Double : false user instanceof Shinhan : true --> 신한은행 객체 package objCompare; public class Obj { public static void main(String[] args) { System.out.println("안녕" instanceof String); System.out.println(new Double(10.58) instanceof Double); } } 2. 오늘 실습코드 1) 은행! ** ATM 메인메소드 ** package day25; import java.util..
2020.02.17 1. 메소드부터 먼저 만들고 마지막에 뷰단을 만드는 것을 권장 2. 오늘 실습코드 ** 아직 완성된 코드가 아님, 다음 시간에 완성할 예정 ** 1) 은행! ** ATM 메인 클래스 ** package day24; import java.util.Random; import java.util.Scanner; public class ATM { public static void main(String[] args) { String msg = "1.신한은행\n2.국민은행\n3.우리은행\n4.나가기"; String menu = "1.계좌개설\n2.입금하기\n3.출금하기\n4.잔액조회\n5.나가기"; String[] bankName = {"신한은행", "국민은행", "우리은행"}; Scanner sc = new Sca..
2020.02.14 1. casting 1) up casting : 부모 타입에 자식 값이 들어있는 기법 부모클래스명 객체 = new 자식생성자(); ** 부모와 자식간에 공통요소(재정의 메소드)만 사용 가능하며, 자식 클래스의 추가된 것들은 사용할 수 없다. ** 부모 타입으로 선언되었기 때문에 부모의 필드만 사용 가능하지만 자식 클래스에서 재정의 했다면, 재정의 된 메소드로 사용된다. 2) down casting : 자식 타입에 부모 값이 들어가는 기법 자식클래스명 객체 = (자식클래스명) 업캐스팅된 인스턴스된 클래스; ** 자식 클래스 타입으로 부모 생성자를 호출하면 오류 발생 Why? 부모의 범위가 더 크기 때문에 자식에 담을 수 없다. ** 부모클래스로 업캐스팅 되었던 클래스를 다시 본래의 자식클래스로 형변환하는 ..
2020.02.13 1. 기본생성자(default constructor) : 컴파일 할 때, 클래스에 생성자가 하나도 정의되지 않은 경우 컴파일러는 자동적으로 기본 생성자를 추가한다. 클래스이름() { } 2. 기본생성자가 컴파일러에 의해서 추가되는 경우는 클래스에 정의된 생성자가 하나도 없을때 뿐이다. 3. 부모클래스에 기본생성자가 없다면 모든 자식 클래스에도 기본 생성자가 없다. : 자식 기본 생성자(매개변수가 없는 생성자)는 항상 부모의 기본 생성자를 호출한다. 만약 부모에 기본 생성자가 없다면 반드시 자식클래스에서 생성자를 만들고 부모 생성자에게 값을 직접 전달해야 한다. 따라서 부모 클래스에는 기본 생성자를 만들어 놓는 것이 좋다. 4. 오늘 실습코드 1) Job package day22; import java.u..
2020.02.12 1. 상속(inheritance) 1) 새로운 클래스를 선언할 때 기존에 사용중이던 클래스의 필드에서 가져오고 싶은 필드가 있다면 상속을 받는다. 2) 여러 클래스를 만들 때 공통요소들을 먼저 묶고 부모 클래스를 선언한 후 상속해준다. 2. 생성자 : 자식 생성자를 호출했을 때 자식 필드만 메모리에 할당된다면, 자식 객체는 절대 부모 필드에 접근할 수 없다. 따라서, 자식 생성자 호출시 부모 생성자가 먼저 호출되고 그 다음 자식 생성자가 호출 된다. 코드에서는 부모 생성자 호출 시 super()로 작성한다. 생략이 가능하고, 생략시 컴파일러가 자동으로 호출해준다. 3. 다형성(Polymorphism) 1) 오버로딩(Overloading) 2) 재정의(Overriding) : 부모의 메소드 중 수정하고자 ..