본문 바로가기

전체 글148

DownCasting & instance of DownCasting class Car{ void drive(){ System.out.println("자동차가 움직인다"); } } class FireEngine extends Car { void water() { System.out.println("물을 쏜다"); } void drive(){ System.out.println("소방차가 움직인다"); } } public class DownCasting { public static void main(String args[]){ Car car = new Car(); FireEngine fe = new FireEngine(); car = fe; // Upcasting car.drive(); FireEngine fe2 = new FireEngine(); fe2.. 2020. 3. 29.
상속에서의 생성자 생성자 class Customer{ public Customer(){ System.out.println("고객 호출"); } } class VipCustomer extends Customer{ public VipCustomer(){ // super(); 자동생성 System.out.println("VIP고객 호출"); } } public class Test { public static void main(String args[]) { VipCustomer vipCustomer = new VipCustomer(); } } 출력결과: 고객 호출 VIP고객 호출 - Customer는 생성하지 않고 Customer의 하위 클래스인 VipCustomer의 인스턴스만 생성했지만, Pre-compile 단계에서 알아서.. 2020. 3. 29.
다형성 , 상속, 가상함수 , 동적바인딩 다형성 다형성은 동일한 코드로 경우에 따라 다른 동작을 하게 되는 것을 말한다. 다형성은 하나의 코드가 타입에 따라 다르게 해석되어 다른 일을 할 수 있는 것을 말한다. 상속 클래스의 작성에서 코드의 재사용이 가능하게 해주는 중요한 개념이다. 출처: https://plas.tistory.com/29 [프로그래밍노리터] Upcasting 은 이런 다형성(Polymorphism)을 사용하고 싶을 때, 부모의 타입에 자식의 인스턴스를 넣는 것을 가르킨다. 상속 상속의 사용 시기 : 1. IS-A(inheritence) is a relationship 자식 - 부모 2. HAS-A(composition) : 하위 클래스가 상위 클래스를 포함하는 경우 is-a (상속) has-a (상속 X) 지금은 안쓰지만 예전.. 2020. 3. 28.
ArrayList 기초 임얼쑤의 국어성적은77 임얼쑤의 수학성적은88 임얼쑤의 체육성적은99 총점은264 다음과 같이 Student의 과목 및 성적을 입력받고, 총점을 출력해보는 프로그램을 만들어 보려고 한다. public class Student { int studentNumber; String name; ArrayList subjectArrayList; ... 과목이 SubjectEnglish, SubjectMath 와 같이 여러 변수가 생길 수 있기에 Subject로 따로 분리해서 관리한다. 이 때, Subject가 여러개 있을 수 있으므로 ArrayList로 관리한다. public Student(int studentNumber,String name){ this.studentNumber=studentNumber; this.. 2020. 3. 28.
배열 ( Array ) 배열 값의 출력 int[] iArr = {100, 95, 80, 70, 60}; System.out.println(Arrays.toString(iArr)); System.out.println(iArr); 출력결과 : [100, 95, 80, 70, 60] [I@5594a1b5 // 자바의 정석 191p 예제 Array값을 출력하고 싶으면, Arrays.toString() 을 통해서 출력해야한다. 바로 출력하면 타입@주소 식의 값이 출력된다. 배열의 복사 // 배열의 길이를 2배만큼 늘림 int arr[] = new int[5]; int temp[] = new int[arr.length*2]; for(int i=0; i 2020. 3. 27.
Singleton Pattern 싱글톤 패턴이란? 어떤 클래스의 생성에 대해서 딱 한번만 메모리를 할당하는 방법 클래스를 사용하고 싶으면, 처음 생성된 인스턴스를 통해서만 접근해야 한다. 싱글톤 패턴을 쓰는 이유 고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있음 또한 싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다. DBCP(DataBase Connection Pool)처럼 공통된 객체를 여러개 생성해서 사용해야하는 상황에서 많이 사용. (쓰레드풀, 캐시, 대화상자, 사용자 설정, 레지스트리 설정, 로그 기록 객체등) 안드로이드 앱 같은 경우 각 액티비티나 클래스별로 주요 클래스들을 일일이 전달하기가 번거롭기 때문에 .. 2020. 3. 25.
Call by value VS Call by reference Call by value 말 그대로 값에 의한 호출 vs 참조에 의한 호출 public static void swap(int x, int y) { int temp = x; x = y; y = temp; } public static void main(String[] args) { int a = 10; int b = 20; System.out.println("swap() 호출 전 : a = " + a + ", b = " + b); swap(a, b); System.out.println("swap() 호출 후 : a = " + a + ", b = " + b); } 출력결과 : swap() 호출 전 : a = 10, b = 20 swap() 호출 후 : a = 10, b = 20 값을 바꾼 것은 a,b가 아니라.. 2020. 3. 25.
StringBuilder String stringValue1 = "TEST 1"; String stringValue2 = "TEST 2"; System.out.println("stringValue1: " + stringValue1.hashCode()); System.out.println("stringValue2: " + stringValue2.hashCode()); stringValue1 = stringValue1 + stringValue2; System.out.println("stringValue1: " + stringValue1.hashCode()); StringBuffer sb = new StringBuffer(); System.out.println("sb: " + sb.hashCode()); sb.append("TEST .. 2020. 3. 23.