본문 바로가기

전체 글

(61)
다형성(polymorphism) 출처 - Java의 정석 기초편 (남궁 성) 1. 다형성 - 조상 타입 참조변수로 자손 타입 인스턴스 다루는 것 - 참조변수 타입에 따라 사용할 수 있는 인스턴스 멤버 개수 달라짐 SmartTv s = new SmartTv(); // 참조변수와 인스턴스의 타입이 일치 (일반적) Tv t = new SmartTv(); // 조상 타입 참조변수로 자손 타입 인스턴스 참조 (다형성) SmartTv s = new Tv(); // 에러, 허용 안 됨 2. 참조변수 형변환 - 상속 관계의 참조변수는 서로 형변환 가능 - 사용할 수 있는 멤버 개수를 조절하는 것(리모콘 변경될 뿐 변수에 저장된 주소값 변경되지 않음) - 조상 타입으로 형변환은 다룰 수 있는 멤버 개수가 줄어드므로 형변환 생략 가능(항상 안전) cla..
제어자(modifier) 출처 - Java의 정석 기초편 (남궁 성) 1. 제어자 - 클래스와 클래스의 멤버(변수, 메서드)에 부가적인 의미 부여 - 접근 제어자: public, protected, (default), private - 그 외: static, final, abstract 등 - 하나의 대상에 여러 제어자 사용가능 (접근 제어자는 하나만 선택) 2. static - 클래스의, 공통적인 - 사용: 멤버변수, 메서드, 초기화 블럭 - 인스턴스 멤버를 사용하지 않는 메서드는 static 붙여, 인스턴스를 생성하지 않고도 호출 가능하도록 고려 class StaticTest { static int width = 200; // 클래스 변수(static변수) static int height = 120; static { // 클..
super, super(), package, import문 출처 - Java의 정석 기초편 (남궁 성) 1. 참조변수 super - super 는 조상 멤버와 자신 멤버 구별시 사용 ≒ this 는 지역 변수와 인스턴스 변수 구별시 사용 class Ex7_2 { public static void main(String args[]) { child c = new child(); c.method(); } } class Parent { int x = 10; } // super.x class Child extends Parent { int x = 20; // this.x void method() { System.out.println("x=" + x); // x=20 가까운 쪽 System.out.println("this.x=" + this.x); // this.x=20 ..
상속, 포함, Object클래스, 오버라이딩 출처 - Java의 정석 기초편 (남궁 성) 1. 상속(inheritance) - 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 - 자손 클래스는 조상 클래스의 모든 멤버를 상속받음(생성자, 초기화 블럭 제외) - 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많음 - 자손 클래스의 변경은 조상 클래스에 영향을 미치지 않음, 반대의 경우 영향을 미침 - 자손 클래스의 인스턴스 생성하면, 따로 조상 클래스의 인스턴스 생성하지 않고도 조상 클래스의 멤버들 사용 가능 - 자바는 단일 상속만 허용, 비중이 높은 클래스 하나만 상속 관계, 나머지는 포함관계 class Parent {} class Child extends Parent { // 상속 } 2. 포함(composite) - 클래스의 멤..
메서드, return문, 호출스택, 매개변수, 생성자 출처 - Java의 정석 기초편 (남궁 성) 1. 메서드란? - 일련의 문장들을 하나로 묶은 것 - 장점: 코드 재사용 가능, 관리 용이, 중복 제거, 간결 - 블랙박스(black box) - 메서드 정의란 선언부(header)와 구현부(body) 작성하는 것 - 선언부: 반환타입(반환값이 없는 경우 void), 매개변수 선언(0~n개, 타입 생략 불가) - 구현부: 지역변수, return문(0~1개, 자동 형변환 가능한 것) 반환타입 메서드이름(타입 매개변수명, 타입 매개변수명, ...) // 선언부 { // 메서드 호출시 수행될 코드, 구현부 } int add(int a, int b) { int result = a+b; return result; } 2. 메서드 호출 - 인수(argument)와 매개..
클래스, 객체, 선언 위치에 따른 변수의 종류 출처 - Java의 정석 기초편 (남궁 성) 1. 객체지향 언어 - 기존 프로그래밍 언어에 객체지향 규칙을 추가 - 재사용성, 유지보수, 중복된 코드 제거 - 캡슐화, 상속, 추상화, 다형성 2. 클래스(제품 설계도) → 객체(제품) - 클래스란 객체를 정의해 놓은 것, 객체를 생성하는데 사용 - 객체란 실제로 존재하는 것, 프로그래밍에서의 객체는 클래스에 정의된 내용대로 메모리에 생성된 것 3. 객체 - 속성(변수)과 기능(메서드)의 집합 - 객체 = 클래스의 인스턴스(instance) - 클래스 생성 → 객체 생성 → 객체 사용 - 인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치 클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수를 선언 변수명 = ..
배열(Array) 출처 - Java의 정석 기초편 (남궁 성) 1. 배열이란? - 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 - 각 저장공간이 연속적으로 배치 - 배열의 요소: 생성된 배열의 각 저장공간, 배열이름[인덱스] - 배열의 인덱스: 배열의 요소마다 붙여진 일련번호, 인덱스의 범위는 0부터 배열길이-1 타입[] 변수이름; // 배열의 선언 (배열을 다루기 위한 참조변수 선언) 변수이름 = new 타입[길이]; // 배열의 생성 (실제 저장공간을 생성) 타입[] 변수이름 = new 타입[길이]; // 배열의 선언과 생성을 동시에 int[] score = new int[5]; // 길이가 5인 int 배열 2. 배열의 길이 - 배열은 한번 생성하면 실행동안 길이 변경 불가 - 배열이름.length 는 상수 ..
반복문(for, while) 출처 - Java의 정석 (남궁 성) 1. for문 - 반복 횟수 알고 있을 때 for, 그렇지 않을 때 while 사용 (항상 서로 변환 가능) - 조건식 값이 참(true) 이면 반복 계속하고, 거짓(false) 이면 for문을 벗어난다. - 초기화, 조건식, 증감식, 블럭 {} - for(;;){...} // 초기화, 조건식, 증감식 모두 생략시 무한 반복문 for (초기화;조건식;증감식) { // 조건식이 true 인 동안 수행될 문장들 } for (int i=1;i