객체지향 개념 공부 시작합니다.
클래스의 정의 : 클래스란 객체를 정의해 놓은 것클래스의 용도 : 클래스는 객체를 생성하는데 사용객체의 정의 : 실제로 존재하는 것. 사물 또는 개념객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름객체 = 속성(변수) + 기능(메서드)객체 : 모든 인스턴스를
객체의 생성객체의 사용객체마다 별도의 저장공간이 생긴다.변수 : 하나의 값만 저장가능(참조변수도 마찬가지)
객체 배열 == 참조변수 배열위 코드를 아래 배열로 바꿀 수 있다.※ 아래 코드를 빼먹는 실수를 하지 말자. 위에 코드는 그림에서 볼 수 있듯이 참조변수 배열을 생성한 코드일 뿐, 객체 배열 생성은 따로 해줘야 한다.한 문장으로 아래와 같이 쓸 수도 있다.
클래스1\. 설계도2\. 데이터 + 함수3\. 사용자 정의 타입1\. 변수 : 하나의 데이터를 저장할 수 있는 공간2\. 배열 : 배열 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간3\. 구조체 : 서로 관련된 여러 데이터(종류 관게X)를 하나로 저장할 수 있
클래스 영역 - iv, cv메서드 영역 = lvcv : 아무때나 사용가능. 객체 생성 필요 Xiv 생성시기 : 인스턴스가 생성되었을 때lv : 메서드 끝날때까지 유효객체 = iv 묶음 + 메서드
속성 : 무늬, 숫자, 폭, 높이개별 속성(iv) : 무늬, 숫자공유 속성(cv) : 폭, 높이cv의 올바른 사용법※ width, height의 경우 공유 속성이다. 따라서 c1.width = 50; c1.height = 80; 으로 선언하면 자칫 c1의 속성만이 변경
문장들을 묶어 놓은 것.값(입력)을 받아서 처리하고, 결과를 반환(출력)클래스 내에 있는 함수(객체지향 개념에서의 함수)중복코드 제거코드관리 용이코드 재사용 가능코드가 간결해져서 이해 쉬움반복적으로 수행되는 여러 문장을 메서드로 작성하나의 메서드는 한 가지 기능만 수행
메서드 수행에 필요한 메모리가 제공되는 공간메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제아래 있는 메서드가 위의 메서드를 호출한 것맨 위의 메서드 하나만 실행 중, 나머지는 대기 중
그림 그리며 연습기본형 매개변수 : 변수의 값을 읽기만 할 수 있다.(read only)참조형 매개변수 : 변수의 값을 읽고 변경할 수 있다.(read & write)
인스턴스 생성 후, '참조변수.메서드이름()'으로 호출인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드메서드 내에서 인스턴스 변수(iv) 사용가능객체생성없이 '클래스이름.메서드이름()'으로 호출 (ex. Math.round())인스턴스 멤버(iv, im)와 관련
overloading, 과적java에서 명확한 명칭 : 메서드 오버로딩한 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것메서드 이름이 같아야 한다.매개변수의 개수 또는 타입이 달라야 한다.반환 타입은 영향없다.오버로딩이 아닌 예1 - 변수 이름만 다름. 메서드
인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드(iv 초기화 메서드)'인스턴스 생성시 수행할 작업(iv 초기화)에 사용위 코드를 아래와 같이 생성자 호출을 통해 초기화 가능이름이 클래스 이름과 같아야 한다.리턴 값이 없다.(void 안 붙임)모든 클래스는 반
생성자에서 다른 생성자 호출할 때 사용(코드 중복제거를 위해 다른 생성자 호출을 함)다른 생성자 호출시 첫 줄에서만 사용가능인스턴스 자신을 가리키는 참조변수인스턴스 메서드(생성자 포함)에서 사용 가능지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용
멤버변수(iv, cv)는 자동 초기화된다.(타입마다 다르지만 보통 0으로 초기화)지역변수(lv)는 수동 초기화 해야함(사용전에 반드시!!!)why? 메서드는 재사용이 빈번하다. 지역변수는 메서드가 호출되어 작업하는 동안만 존재하기 때문에 생명주기가 짧다. 그런데 메서드
기존의 클래스로 새로운 클래스를 작성하는 것.(코드의 재사용)두 클래스를 부모와 자식으로 관계를 맺어주는 것.자손은 조상의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외)자손의 멤버 개수는 조상보다 적을 수 없다.(같거나 많다.)자손의 변경은 조상에 영향을 미치지
클래스의 멤버로 참조변수를 선언하는 것작은 단위의 클래스를 만들고, 이들을 조합해서 클래스를 만든다.상속관계 'A는 B이다(is-a)'포함관계 'A는 B를 가지고 있다.(has-a)'상속은 여러 제약이 많기 때문에 꼭 필요한 경우에 사용. 대부분 포함으로 구현.
Java는 단일상속만을 허용 (C++은 다중상속 허용)(두 부모가 같은 메서드를 갖고 있을 때 충돌 위험이 있으므로)비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.모든 클래스의 조상부모가 없는 클래스는 자동적으로 Object 클래스를 상속받음(컴파일러
정확히는 메서드 오버라이딩상속받은 조상의 메서드를 자신에 맞게 변경하는 것생성자, toString 오버라이딩 활용 예제 - 간결해진 코드를 느껴보자선언부가 조상 클래스의 메서드와 일치해야 한다.접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.예외(t
객체 자신을 가리키는 참조 변수인스턴스 메서드(생성자)내에서만 존재 (static 메서드 내에 사용 불가)조상의 멤버를 자신의 멤버와 구별할 때 사용 (this : lv와 iv 구별에 사용)조상의 생성자를 호출할 때 사용 (생성자, 초기화 블럭은 상속 X)조상의 멤버는
클래스 사용할 때 패키지 이름을 생략할 수 있다.컴파일러에게 클래스가 속한 패키지를 알려준다.eclipse 단축 키 : ctrl + shift + ojava.lang 패키지의 클래스는 import 하지않고 사용할 수 있다.(String, Object, System, T
제어자(modifier) 클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여 접근 제어자 : public, protected, (default), private 그 외 : static, final, abstract, native, transient, sy
private : 같은 클래스 내에서만 접근이 가능하다.(default) : 같은 패키지 내에서만 접근이 가능하다.protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능public : 접근 제한이 전혀 없다.클래스 이름 : publ
접근 제어자를 사용하여 객체를 캡슐화 가능접근 제어자를 사용하는 이유외부로부터 데이터를 보호하기 위해서외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해서예제 1 - 외부로부터 데이터를 보호위와 같이 코드를 작성하면 다음과 같이 멤버 변수에 직접 접근할 수 없
여러 가지 형태를 가질 수 있는 능력조상 타입 참조 변수로 자손 타입 객체를 다루는 것객체와 참조변수의 타입이 일치할 때와 일치하지 않을 때의 차이자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다.
사용할 수 있는 멤버의 갯수를 조절하는 것조상 자손 관계의 참조변수는 서로 형변환 가능
참조변수의 형변환 가능여부 확인에 사용. 가능하면 true 반환형변환 전에 반드시 instanceof로 확인해야 함자기 자신, 조상들에 대해서는 전부 true를 반환한다Q. 참조변수의 형변환은 왜 하는가?참조변수(리모콘)을 변경함으로써 사용할 수 있는 멤버의 갯수를 조
다형적 매개변수하나의 배열로 여러 종류 객체 다루기참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스 인스턴스를 넘겨줄 수 있다.실습
조상타입의 배열에 자손들의 객체를 담을 수 있다.위의 코드를 다음과 같이 바꿀 수 있다.예제
미완성 설계도. 추상(미완성) 메서드를 갖고 있는 클래스다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능(※ 모든 추상 메서드를 구현해야만 한다. 1개라도 덜 구현되면 abstract class 이다!!
여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존 클래스의 공통 부분을 뽑아서 추상 클래스를 만든다.구현사용
추상 메서드의 집합구현된 것이 전혀 없는 설계도. 껍데기(모든 멤버가 public)예제 - public, abstract, static, final 생략 가능. 안 써도 항상 public, 상수, 추상 메서드 이므로!인터페이스의 조상은 인터페이스만 가능 (Object가
인터페이스도 구현 클래스의 부모? -> 같다고 봐도 무방인터페이스 타입 매개변수는 인터페이스 구현한 클래스의 객체만 가능구현사용인터페이스를 메서드의 리턴타입으로 지정할 수 있다.
두 대상(객체) 간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다.알맹이(구현)가 바뀌어도, 껍데기(선언)는 그대로기 때문에 변경에 유리, 유연ex. GUI, 자판기선언(설계)와 구현을 분리시킬 수 있게 한다.위 코드를 아래와 같이 분리인터페이스 덕분에 B가 변
개발 시간을 단축할 수 있다.(B가 개발 되어있지 않아도 I만 있으면 A를 개발할 수 있음)변경에 유리한 설계가 가능하다.표준화가 가능하다.(JDBC : 자바 표준 인터페이스)EX. Java Application - JDBC - DB(Oracle, MySQL)서로 관계
인터페이스에 default 메서드, static 메서드 추가 가능(JDK 1.8 부터)인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려움(인터페이스 : 추상 메서드 집합)Repairable 인터페이스에 isfinished() 메서드를 추가하려고 할 때, 인터페이