메서드 재정의하기(overring) 하위 클래스에서 메서드 재정의 하기 오버라이딩(overriding) : 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음 VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않음 재정의 하여 구현해야 함 VIPCustomer.java @Override public int calcPrice(int price) { bonusPoint += price * bonusRatio; return price - (int)(price * salesRatio); } @overriding 애노테이션 (annotation) 애노테이션은 원래 주석이라는 의미 컴파일러에게 특별한 정보를 제공해주는 역할 @over.. 상속에서 클래스 생성 과정과 형 변환 하위 클래스가 생성 되는 과정 하위 클래스를 생성하면 상위 클래스가 먼저 생성 됨 new VIPCustomer()를 호출하면 Customer()가 먼저 호출 됨 클래스가 상속 받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출 함 super 키워드 하위 클래스에서 가지는 상위 클래스에 대한 참조 값 super()는 상위 클래스의 기본 생성자를 호출 함 하위 클래스에서 명시적으로 상위 클래스의 생성자를 호출하지 않으면 super()가 호출 됨 ( 이때 반드시 상위 클래스의 기본 생성자가 존재 해야 함) 상위 클래스의 기본 생성자가 없는 경우 ( 다른 생성자가 있는 경우 ) 하위 클래스에서는 생성자에서는 super를 이용하여 명시적으로 상위 클래스의 생성자를 호출 함 super는 생성된.. 2차원 배열 사용하기 다차원 배열 이차원 이상으로 구현 된 배열 평면 (이차원 배열) 이나 공간(삼차원 배열)을 활용한 프로그램 구현 이차원 배열 예제 int[][] arr = {{1,2,3}, {4,5,6}} public class TwoDimensionTest { public static void main(String[] args) { int[][] arr = { {1,2,3}, {4,5,6,7}}; int i, j; for(i =0; i 객체 배열 사용하기 객체 배열 선언과 구현 기본 자료형 배열은 선언과 동시에 배열의 크기만큼의 메모리가 할당되지만, 객체 배열의 경우엔 요소가 되는 객체의 주소가 들어갈(4바이트, 8바이트) 메모리만 할당되고(null) 각 요소 객체는 생성하여 저장해야 함 Book.java public class Book { private String title; private String author; public Book() {} public Book(String title, String author) { this.title = title; this.author = author; } public String getTitle() { return title; } public void setTitle(String title) { this.t.. 자료를 순차적으로 한꺼번에 관리하는 방법 - 배열(array) 배열이란? 동일한 자료형의 순차적 자료 구조 인덱스 연산자[]를 이용하여 빠른 참조가 가능 물리적 위치와 논리적 위치가 동일 배열의 순서는 0부터 시작 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함 배열 선언과 초기화 배열 선언하기 int[] arr1 = new int[10]; int arr2[] = new int[10]; 배열 초기화 하기 배열은 선언과 동시에 자료형에 따라 초기화 됨 ( 정수는 0, 실수는 0.0, 객체는 null) 필요에 따라 초기값을 지정할 수 있음 int[] numbers = new int[] {10, 20, 30}; //개수 생략해야 함 int[] numbers = {10, 20, 30}; // new int[] 생략 가능 int[] ids; ids = new .. static 응용 - 싱글톤 패턴(singleton pattern) 싱글톤 패턴이란? 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴 static 변수, 메서드를 활용하여 구현 할 수 있음 싱글톤 패턴으로 회사 객체 구현하기 생성자는 private으로 선언 private Company() {} 클래스 내부에 유일한 private 인스턴스 생성 private static Company instance = new Company(); 외부에서 유일한 인스턴스를 참조할 수 있는 public 메서드 제공 public static Company getInstance() { if( instance == null) { instance = new Company(); } return instance; } public class CompanyTest { pub.. static메서드의 구현과 활용, 변수의 유효 범위 static 메서드 만들기 serialNum 변수를 private으로 선언하고 getter/setter 구현 Employee.java private static int serialNum = 1000; ... public static int getSerialNum() { return serialNum; } public static void setSerialNum(int serialNum) { Employee.serialNum = serialNum; } 클래스 이름으로 호출 가능 ( 클래스 메서드, 정적 메서드 ) System.out.println(Employee.getSerialNum()); static 메서드(클래스 메서드)에서는 인스턴스 변수를 사용할 수 없다 static 메서드는 인스턴스 생성과 무관.. 여러 인스턴스에서 고통으로 사용하는 변수를 선언하자 - static 변수 공통으로 사용하는 변수가 필요한 경우 여러 인스턴스가 공유하는 기준 값이 필요한 경우 학생마다 새로운 학번 생성 카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여 회사에 사원이 입사할때 마다 새로운 사번이 필요함 static 변수 선언과 사용하기 static int serialNum; 인스턴스가 생성될 때 만들어지는 변수가 아닌, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당 클래스 변수, 정적변수라고도 함(vs. 인스턴스 변수) 인스턴스 생성과 상관 없이 사용 가능하므로 클래스 이름으로 직접 참조 Student.serialNum = 100; static 변수 테스트하기 Employee.java public class Employee { public static int serialNum .. 객체 자신을 가리키는 this this가 하는 일 인스턴스 자신의 메모리를 가리킴 생성자에서 또 다른 생성자를 호출 할때 사용 자신의 주소(참조값)을 반환 함 생성된 인스턴스 메모리의 주소를 가짐 클래스 내에서 참조변수가 가지는 주소 값과 동일 한 주소 값을 가지는 키워드 public void setYear(int year) { this.year = year; } 생성자에서 다른 생성자를 호출 하는 this 클래스에 생성자가 여러 개 인경우, this를 이용하여 생성자에서 다른 생성자를 호출할 수 있음 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 쓸 수 없음 public class Person { String name; int age.. 캡슐화 (encapsulation) 정보 은닉을 활용한 캡슐화 꼭 필요한 정보와 기능만 외부에 오픈함 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현 하게 함 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화 한다. 레포트 만들기 예제 public class MakeReport { StringBuffer buffer = new StringBuffer(); private String line = "===========================================\n"; private String title = " 이름\t 주소 \t\t 전화번호 \n"; private void makeHeader() { buffer.append(line); buffer.append(ti.. 접근 제어 지시자(access modifier)와 정보은닉(infomation hiding) 접근 제어 지시자 (accesss modifier) 클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드 private : 같은 클래스 내부에서만 접근 가능 ( 외부 클래스, 상속 관계의 클래스에서도 접근 불가) 아무것도 없음 (default) : 같은 패키지 내부에서만 접근 가능 ( 상속 관계라도 패키지가 다르면 접근 불가) protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근 할 수 없음 public : 클래스의 외부 어디서나 접근 할 수 있음 get()/ set() 메서드 private 으로 선언된 멤버 변수 (필드)에 대해 접근, 수정할 수 있는 메서드를 public으로 제공 get() 메서드만 제공 되는 경우 r.. 참조 자료형 변수 참조 자료형 변수의 자료형 클래스형으로 변수를 선언 기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다름 참조 자료형을 사용 할때는 해당 변수에 대해 생성하여야 함 (String 클래스는 예외적으로 생성하지 않고 사용할 수 있음) 참조 자료형 정의하여 사용하기 학생이 수강한 과목들에 대한 성적을 산출하기 위한 경우 학생 클래스 속성에 과목이 모두 있으면 불합리 학생(Student)과 과목(Subject)에 대한 클래스를 분리하여 사용하고 Subject 클래스를 활용하여 수강한 과목들의 변수의 타입으로 선언 선언된 Subject 변수는 생성된 인스턴스가 아니므로, Student의 생성자에서 생성하여 사용 Student.java package ch09; public cla.. 이전 1 2 3 4 다음