본문 바로가기

전체 글

(133)
추상 클래스 추상 클래스 클래스 이름 앞에 abstract 라는 키워드를 사용한다. 이런 클래스를 추상 클래스라고 부르며, 추상 클래스는 객체를 생성 할 수 없다. 즉, 내 자신이 인스터스화 할 수 없다. 따라서 상속을 이용해서 서브클래스를 인스턴스화 하여 추상클래스 슈퍼클래스에 접근해보자. 추상 클래스를 상속받은 모든 서브 클래스는 추상 메소드와 같은 이름의 메소드를 가지고 있다. - 강제적으로 구현하기 위함이다. 또한, 추상화 된 클래스를 상속받은 서브 클래스의 참조타입은 슈퍼클래스의 클래스 타입으로 객체화 되어야 한다. 추상 클래스가 직접 인스턴스화 하는게 아니라 슈퍼클래스 참조타입으로 서브클래스가 인스턴스화된다. ▶ 추상 클래스 특징 - 클래스명 앞에 abstract 키워드가 붙는다. - abstract 키워..
final final 슈퍼 클래스의 메소드 중 서브클래스에서 오버라이딩 되면 안되는 메소드가 있을 수 있다. 메소드의 변경을 방지하도록 더 이상 변경이 불가능 하도록 만드는 키워드 이다. 이름앞에 final을 붙이는 방식. 이 키워드는 어떤 위치에 붙느냐에 따라 용도가 달라진다. - 클래스 : 이 클래스를 상속받을 수 없다. 서브클래스 선언 불가능. - 메소드 : 이 메소드를 오버라이딩 할 수 없다. - 필드 : 이 필드의 값을 변경] 할 수 없다는 의미. 상수라고 부른다.
메소드 오버라이딩 오버라이딩 슈퍼클래스의 메서드와 동일하 메서드 명과 인수로 재 구현하는 방식 슈퍼클래스의 메서드를 재 구현 할 시 @Override 어노테이션이 붙는다. 이클립스에서 해당 메소드명. 하고 ctrl+space 입력-> 해당 메소드 선택 ▶ 오버라이딩 / 오버로딩 차이점 - 오버로딩 : 메소드 이름이 같지만 인수의 형과 갯수가 다른 메소드를 정의하는 것. - 오버라이딩 : 서브 클래스에서 이름과 인수의 형, 개수까지 슈퍼 클래스의 메소드와 동일한 메소드를 정의하는 기능이다.
상속(extends) 상속 이미 설계된 클래스를 바탕으로 새로운 클래스를 만들수 있다. 기존에 있던 클래스를 확장하며 필드를 물려받는다. 이를 상속 받는다고 한다. 서브 클래스는 슈퍼 클래스의 필드 및 메서드를 가진다. class 서브 클래스 이름 extends 슈퍼 클래스 이름{} - 슈퍼클래스 : 기존의 클래스 - 서브클래스 : 기존의 클래스를 상속받은 클래스 슈퍼클래스를 상속받아(확장해) 선언한 클래스는 서브클래스이며, extends 키워드가 필요하다. extends 키워드가 없는 경우는 Object 클래스를 상속받는다. 또한, 확장을 하더라도 접근지정자에 영향을 받는다. 서브클래스 에서 슈퍼클래스 메소드를 호출할 수 있다. 슈퍼클래스는 서브클래스에 접근 할 수 없다. 내 위치에서 나 자신을 가르킬 때는 this 키워드..
클래스 라이브러리 클래스 라이브러리 ▶ 문자열 처리 클래스 - String 참조타입 String은 기본 데이터 형이 아닌 클래스이며, String 클래스의 메서드를 사용할 수 있다. ▶기타 클래스 ☞ Integer 클래스 기본형을 다루는 래퍼 클래스. Integer 클래스의 주요 메소드 - static int parseInt(String s) : 문자열을 정수로 변환해 준다. - static Integer valueOf(String s) : 인수로 전달된 문자열의 값으로 초기화 된 Integer 객체를 반환한다. ☞ Math 클래스 수학적 계산 기능을 구현한 클래스. Math 클래스의 주요 메소드 - static int abs(int a) : int 형의 인수의 절대값을 반환한다. - 등등...
생성자 생성자 객체의 멤버에 자동으로 초기값을 설정해 주는 메소드. ▶생성자 메서드 기본적으로 생략이 되어 있으며, 메서드명은 클래스명과 동일하다. 객체화(인스턴스화) 될 때 실행되는 메서드. 아래와 같이 선언한다. 접근지정자 클래스명(){} ▶ 생성자 메서드 오버로딩 생성자 메서드도 일반 메서드와 마찬가지로 오버로딩이 가능하다. 오버로딩 하는 이유는 초기값 설정을 상세하게 하기 위함이다. 생성자 메서드는 없이 자동으로 초기값을 생성해 주기 때문에 생략하여도 상관없지만 인수값을 받아 초기값을 설정하고자 할 때는 생성자 메소드 정의부터 하는것이 좋다. 생성자 메서드에 인수값이 있을 경우 인스턴스화 할 때 일치하는 데이터 타입을 인수에 삽입하고 인스턴스화 해야한다. ▶생성자에 접근 제한자를 붙이기 생성자 메서드의 ..
메소드 오버로딩 메소드 오버로딩 ▶ 메서드 오버로딩. 같은 이름의 메소드를 2개 이상 정의 할 수 있는 기능. 여러개의 메소드들을 같은 이름으로 중복 정의(오버로딩) 해 두면 그 이름과 일치하는 메소드 중 인수 형(type)과개수가 일치하는 메소드가 자동적으로 호출된다. 같은 클래스 안에서 이름이 같지만, 인수의 형과 갯수가 다른 메소드를 선언 할 수 있다. ▶ 메소드 오버로딩 사용시 주의 1. 오버로딩 메소드는 이미 선언된 메소드와 비교하여, 인수의 형(type) 또는 갯수를 다르게 한다. 2. 메소드명과 매개변수 타입과 갯수가 같고, 매개변수 명이 달라도 오버로딩이 되지 않는다. error. 3. 리턴데이터 값이 다르고, 이름과 인수값이 동일한 메소드는 컴퓨터가 자동으로 식별할 수 없다. 따라서 리턴 데이터 값 형태..
서로다른 클래스 호출과 객체 생성 한 패키지 내에 서로다른 클래스의 메소드 호출. package kr.or.ksmart; import java.util.ArrayList; import java.util.List; class ACalculater{ private int sum; public int sum(int a, int b) { this.sum = a+b; return sum; } public int get() { return sum; } } public class JavaBasicEx06 { public static void main(String[] args) { ACalculater cal = null; /* ACalculater클래스를 생성하고 계산을 할 수 있는 메서드를 만들어 * 계산을 하고 그 결과값을 반환하시오. 연산>> ..