본문 바로가기

전체 글

(483)
private 메소드를 하위에서 다시 만들어서 호출 할 때 class Animal{ private void show() { System.out.println("animal"); } } class Human extends Animal{ public void show() { System.out.println("Human"); } } class Test { public static void main(String args[]) { Animal a = new Human(); a.show(); } } compile error : show() has private access in Animal a 객체는 a의 명세를 가지고 메소드를 호출하는 데, a의 명세에서 보면, show는 private이기 때문에 실행 시에는 실제 객체가 생성된 Human show()에 접근하겠지만, ..
자바 String 문자열.. - When are two Strings EQUAL? String 클래스는 자바 개발자에게 있어서 다른 클래스 객체와는 다르게 다뤄진다. 먼저 다음과 같이 new String을 하여 초기화 할 수 있다. String string = new String("The Plming Space"); ← 이러한 방법을 추천하지는 않는다. 혹은 다음과 같이 초기화도 가능하다. String string = "The Plming Space"; 문자열을 비교할 때는 equals 메서드와 혹은 == 동등연산자를 이용해서 비교가 가능하고, 때에 따라서 어떤 경우에 true를 리턴하는지를 확인하는 것이 여기서의 목표이다. 다음의 코드를 확인하면, class Equals { public static void main(String[] args) { Double object1 = new..
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메서드와 같은..