내 이야기 (609) 썸네일형 리스트형 Singleton Test 싱글톤 디자인패턴 한 클래스에서 하나의 객체만 만들고자 할 때. 1. 생성자를 private로 만든다. 2. 내부 static 변수로 생성자를 이용해서 객체를 하나 생성한다. 3. public으로 생성된 객체 하나(2번에서 만든 static변수)를 리턴해주는 메소드를 만든다. public class SingletonTest{ public static void main(String[] args){ Company c = Company.getCompany(); Company c1= Company.getCompany(); // Company c2 = new Company(); // 생성자가 private 이므로 외부에서 객체 생성 불가 System.out.println(c); System.out.println(.. 키보드 입력받는 방법 패키지 명 java.lang.System (in) java.io.InputStream (read) java.io.BufferedReader (readLine) 메소드 명 in (필드) public static final InputStream in read (메서드) abstract int read() / int read(byte[] b) readLine (메서드) String readLine() 기 능 표준 입력 스트림. / 키보드 입력을 받을 수 있게 해 줌. in은 바이트스트림을 입력받기 때문에 한글을 받을 수 없으며, 한글을 받기 위해서는 바이트스트림을 문자스트림으로 바꾸는 기능을 하는, InputStreamReader 클래스와 사용. 만약, 라인 단위로 문자를 입력받고자 할 때에는 Buffered.. 자바 접근제어자 자바의 접근제어자 ◇ 범위 private < default < protected < public ◇ private (-) 해당 클래스 내에서만 사용 ◇ package friendly (class default) 동일 패키지 안에서만 사용 ◇ protected (#) 동일 패키지와 해당 클래스를 상속받은 서브 클래스에서만 사용 가능 ◇ public (+) (interface default) 모든 패키지와 클래스에서 사용 가능. ◇ 메소드 오버라이딩과 접근제어자와의 관계? 메소드 오버라이딩 시에, 상속받아서 구현한 오버라이딩 된 메소드는 상위 클래스의 해당 메소드의 접근제어자와 반드시 같을 필요는 없는지만, 범위가 같거나 넓은 범위로 정해야 한다. ◇ 클래스의 public과 default (클래스는 priv.. 클래스 패스 java -classpath classes world.CountryUser 패키지.클래스명 으로 실행. src 위치에서.. CountryUser 클래스가 world 패키지 안에 존재하고 CountryUser 클래스는 world.Asia 패키지 안에 있는 것을 참조할 때.. CountryUser 클래스 자체가 world 패키지 안에 존재하므로, 패키지 명을 통해서 접근해서 실행 class 캐스팅 ◇ Lvalue의 상위 클래스(father)이고, Rvalue가 하위 클래스(son:father을 상속받은)로 메모리를 생성할 때 별도의 타입캐스팅이 없이 가능. father fa = new son(); ◇ 이 때 fa의 참조변수로 메소드의 호출 시에는 son 클래스의 메소드가 호출 됨. 단, son 클래싀 모든 메소드에 접근 가능한 것은 아니며, father 클래스가 가지고 있는 명세에 있는 메소드만 호출 가능이 가능하다. ◇ 반대로 Lvalue 가 하위 클래스(son)이고, Rvalue가 상위 클래스(father)로 메모리를 생성 할 때는 타입 캐스팅 을 하지 않으면, 에러. 그러나, 타입캐스팅을 해서 생성한다고 해도 실제 사용 시에 런타임 에러 발생. 즉, 실제적으로 사용 불가함. 1. son s .. 자바 Day 1-2 ◈ JVM : software 적으로 platform(h/w, o/s) 구현 java interpreter :class (byte code)를 번역해서 o/s에게 넘겨준다 JVM - 메모리 할당 등, Java 프로그램 입장에서는 java o/s 역할을 함. O/S Platform ◈ /** */ 자바 DOC 생성을 위한 주석 ◈ final 변수는 선언 시 반드시 할당을 할 필요는 없지만, 사용하기 전에는 할당해야 한다. - final 멤버변수가 static일 때, 생성자에서 초기화하는 것은 에러. static에서도 초기화 불가(에러) : 생성 시 초기화. final 변수가 메소드 변수일 경우에는 해당 메소드 내에서 사용 전 초기화 가능 - final 멤버변수가 static이 아닐 때, set메서드와 같은.. 추상클래스와 인터페이스 abstract VS interface 공 통 점 1. 추상클래스와 인터페이스는 객체 생성을 할 수 없다. 2. 멤버 함수의 선언부(원형:prototype)만 있고, 정의부(구현:Body)가 없는 메소드를 가진다. 3. 추상클래스와 인터페이스 모두 직접 사용하는 것이 아니라, 해당 추상 클래스와 인터페이스를 상속받아 서 구현을 해서 사용한다.4. 추상클래스와 인터페이스를 상속하여 만든 클래스의 객체의 참조변수로서 다형성을 구현할 수 있다. * 상위클래스의 참조변수로 하위클래스 객체 생성시 하위클래스에서 구현된 메소드 접근이 된다. 즉, 자바에서는 참조변수의 type이 중요한 것이 아니라, 실제 메모리에 생성된 type이 중요하다. 5. 추상클래스와 인터페이스 내의 추상메소드를 상속받아 구현한 곳에서 th.. 인터페이스 ◈ 패키지 ◈ (1) 설명 비슷한 종류의 기능을 가진 클래스들의 묶음 (2) 생김새 자바 파일의 최상단에 package라는 keyword사용 (3) 컴파일방법 #>javac -d . E.java : javac -d 경로 파일명 #>javac -d AAA E.java //상대 경로 #>javac -d C:\SOO\BEGIN\DAY3\BBB E.java //절대 경로 (4) 실행법 #>javac soo.begin.day3.E (5) 압축법 : 재활용을 하기 위해 #>jar -cvf test.jar soo : jar -cvf 저장이름(새이름) 패키지최상단폴더(압축할 자료) : -c 새 아카이브를 만듭니다. : -v 표준 출력에 대한 자세한 정보 출력을 생성합니다. : -f 아카이브 파일 이름을 지정합니다. (.. 이전 1 ··· 69 70 71 72 73 74 75 ··· 77 다음