본문 바로가기

분류 전체보기

(124)
[Java] 다형성 다형성(polymorphism)여러 가지 형태를 가질 수 있는 능력. 참조변수의 형변환기본형 변수와 같이 참조변수도 형변환이 가능하다. 단, 서로 상속관계에 있는 클래스 사이에서만 가능하다.자손타입 → 조상타입(Up-casting) : 형변환 생략 가능자손타입 ← 조상타입(Down-casting) : 형변환 생략 불가 Car 클래스와 Car 클래스를 상속받은 FireEngine 클래스가 있을 때, 가능한 형변환은 다음과 같다.12345678910111213class Car { String color; int door; void drive() { } void stop() { }} class FireEngine extends Car { void water() { }}cs 123456Car car = null..
[Java] 제어자 제어자클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다.제어자의 종류는 접근 제어자와, 그외의 제어자로 나뉜다.접근 제어자 - public, protected, default private그외 제어자 - static, final, abstract, native, transient, synchronized, volatile, strictfp static'클래스의', '공통적인'의 의미를 가진다.static이 붙은 멤버변수와 메서드, 초기화 블럭은 인스턴스가 아닌 클래스에 관계된 것이기 때문에 인스턴스를 생성하지 않고도 사용할 수 있다. final'마지막의', '변경될 수 없는'의 의미를 가진다.변수에 사용되면 값을 변경할 수 없는 상수가 되며, 메서드에 사용되면 오버라이딩을 할 ..
[Java] 상속 상속기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것.코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다.자손 클래스는 조상 클래스의 모든 멤버를 상속받으므로 항상 조상 클래스보다 같거나 많은 멤버를 가진다.조상 클래스가 변경되면 자손 클래스는 영향을 받게 되지만, 자손 클래스가 변경되는 것은 조상 클래스에 아무런 영향을 주지 못한다.생성자와 초기화 블럭은 상속되지 않으며 멤버만 상속된다.12345678class Parent { int age;} class Child extends Parent { void play() { }}cs 클래스 클래스의 멤버 Parent age Child age, play() 포함관계한 클래스의 멤버변수로 다른 클래스 타입의 참조변..
[Java] 생성자 생성자인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'메서드와 마찬가지로 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴값이 없다는 점이 다르다.생성자의 이름은 클래스의 이름과 같아야 한다.생성자는 리턴 값이 없다.연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다.1Card c = new Card();cs 1. 연산자 new에 의해서 메모리(heap)에 Card 클래스의 인스턴스가 생성된다.2. 생성자 Card()가 호출되어 수행된다.3. 연산자 new의 결과로, 생성된 Card 인스턴스의 주소가 반환되어 참조변수 c에 저장된다. 기본 생성자모든 클래스에는 반드시 하나 이상의 생성자가 정의되어 있어야 한다.컴파일할 때, 소스파일의 클래스에 생성자가 하나도 ..
[Java] 오버로딩과 오버라이딩 오버로딩한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것으로 같은 기능을 하는 메서드의 경우 하나의 이름으로 정의할 수 있다.메서드의 이름이 같아야 한다.매개변수의 개수 또는 타입이 달라야 한다. 가변인자기존에는 메서드의 매개변수 개수가 고정적이었으나 JDK1.5부터 동적으로 지정해줄 수 있게 되었다.'타입... 변수명'과 같은 형식으로 선언한다. 가변인자 외에도 매개변수가 더 있다면, 가변인자를 매개변수 중에서 제일 마지막에 선언해야 한다.123public PrintStream printf(String format, Object... args) { ...}Colored by Color Scriptercs 오버라이딩조상 클래스로부터 상속받은 메서드의 내용을 자손 클래스 자신에 맞게 변경하는 것...
[Java] 변수, 메서드 선언위치에 따른 변수의 종류 변수의 종류 선언 위치 생성 시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 인스턴스가 생성되었을 때 지역 변수 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) 변수 선언문이 수행되었을 때 1. 인스턴스 변수클래스 영역에 선언되며, 클래스의 인스턴스를 생성할 때 만들어진다. 이 때문에 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서는 먼저 인스턴스를 생성해야 한다. 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다. 2. 클래스 변수인스턴스 변수 앞에 static을 붙이기만 하면 된다. 인스턴스 변수와는 달리, 모든 인스턴스가 공통된 저장공간(변수)을 공유한다.인스턴스를 생성하지 않고도 언제라도 바로 사용할 수 있..
[Java] 클래스, 객체 객체지향언어기존의 프로그래밍언어와 다른 전혀 새로운 것이 아니라, 기존의 프로그래밍 언어에 몇가지 새로운 규칙을 추가한 보다 발전된 형태의 것.※ 특징1. 코드의 재사용성이 높다. - 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.2. 코드의 관리가 용이하다. - 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.3. 신뢰성이 높은 프로그래밍을 가능하게 한다. - 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 클래스와 객체클래스란 '객체를 정의해놓은 것' 또는 '객체의 설계도 또는 틀'이라고 정의할 수 있다. 클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정..
[Java] 배열 배열의 길이 변경하기1. 더 큰 배열을 새로 생성한다.2. 기존 배열의 내용을 새로운 배열에 복사한다.1234int[] orgArr = new int[5];int[] newArr = new int[orgArr.length*2]; System.arraycopy(orgArr, 0, newArr, 0, orgArr.length);csorgArr의 0번째 인덱스에서부터 orgArr의 길이만큼 newArr의 0번째 위치에 복사하라는 것을 의미한다. 배열의 내용 출력하기반복문을 이용해서 출력하는 방법도 있지만, Arrays.toString을 이용하여 출력하는 방법도 있다.123int[] arr = {2, 4, 6, 8, 10}; System.out.println(Arrays.toString(arr)); // [2,..
[Java] 변수 변수 명명규칙대소문자가 구분되며 길이에 제한이 없다.예약어는 사용할 수 없다.숫자로 시작할 수 없다.특수문자는 '_'와 '$'만을 허용한다. 예약어 abstract default if package this assert do goto private throw boolean double implements protected throws break else import public transient byte enum instanceof return true case extends int short try catch false interface static void char final long strictfp volatile class finally native super while const float ne..
[Java] Java 개요 Java란?썬 마이크로시스템즈에서 개발한 객체지향 프로그래밍 언어. 특징1. 운영체제에 독립적자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이어서 썬 마이크로시스템즈에서는 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 제공하고 있다. 2. 객체지향언어객체지향 개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어이다. 3. 자동 메모리 관리자바로 작성된 프로그램이 실행되면, 가비지컬렉터가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리하지 않아도 된다. 4. 멀..