일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바의 정석 기초편 ch9
- 스프링 mvc2 - 검증
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch3
- 스프링 입문(무료)
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch13
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch7
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch6
- @Aspect
- 자바의 정석 기초편 ch12
- 게시글 목록 api
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch5
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch4
- 2024 정보처리기사 수제비 실기
- 코드로 시작하는 자바 첫걸음
- 자바 기본편 - 다형성
- jpa 활용2 - api 개발 고급
- 스프링 db2 - 데이터 접근 기술
- 스프링 고급 - 스프링 aop
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch1
- Today
- Total
목록자바의 정석 기초편 ch7 (11)
나구리의 개발공부기록
1) 내부클래스클래스 안의 클래스(1) 장점내부 클래스에서 외부 클래스의 멤버들을 외부클래스의 객체를 만들지 않고 접근이 가능함코드의 복잡성을 줄일 수 있음 - 일종의 캡슐화B클래스를 굳이 밖에서 사용할 일이 없을 때 내부클래스로 생성 -> 별도의 방법으로 사용은 가능함class A { // B의 외부클래스 .... class B { // A의 내부클래스 - 객체생성없이도 A의 멤버 접근 가능 ... } ...} (2) 내부 클래스의 종류별 유효범위iv = 내부클래스cv = static 내부 클래스lv = 메서드안에 선언된 내부 클래스class outer { int iv = 0; // iv = 내부클래스와 동일 static int cv = 0; // cv = stati..
1) 인터페이스의 장점 1두 대상(객체)간의 중간 역할을 함 (연결, 대화, 소통)선언부(설계, 껍데기)와 구현부(알맹이)를 분리시킬 수 있음(1) 직접적인 관계의 클래스 A a = new A();로 객체 생성 후 a.method()에 B의 객체를 인자로 입력하여 호출하면 B클래스의 메서드는 출력이 됨그러나 C의 객체를 인자로 출력하려고하면 A클래스에 있는 method()를 C클래스를 파라미터로 오버로딩해야 함, 즉 A의 코드의 수정이 불가피함class A { // C클래스의 메서드를 출력하면 클래스 A의 수정이 불가피함 public void method(B b) { // 클래스 B의 메서드 실행 b.method(); // 메서드 호출 } // 클래스 C의 메서드를 실행하는 메서드를 오버로딩 해야..
1) 인터페이스(interface)추상 메서드의 집합(프로그래밍 관점)즉 구현된 것이 전혀 없는 설계도(껍데기)추상메서드가 인터페이스의 핵심이며 static메서드, 상수, 디폴트메서드(접근제어자가 아님)는 부수적인 요소임 모든멤버는 public 접근제어자가 기본임(1) 추상클래스와 인터페이스의 차이추상클래스 -> 일반클래스인데 추상메서드를 가지고 있음 즉 iv나, 생성자들이 있을 수 있음인터페이스 -> 아무것도 없고 추상메서드만 가지고있으며 iv를 가질 수 없음, 일반 메서드를 가질 수 있도록 변경되었긴 여전히 iv는 없고 다중상속이 가능함(2) 예제interface에서 제어자 없이 그냥 변수를 선언하면 항상 public, static, final 제어자가 기본값이므로 상수로 선언됨제어자 없이 메서드를 ..
1) 추상클래스미완성 설계도(미완성 메서드를 갖고 있는 클래스)미완성 메서드는 선언부만 가지고 있으며 구현부가 없음abstract 리턴타입 메서드이름(); 으로 정의함abstract를 붙힘으로 인하여 '나중에 완성해야 하는구나' 라는 인식을 주도록 할 수 있음 (필수 요소에 대한 강제성 부여)클래스와 메서드 앞에 abstract 붙혀야 에러가 안남다른 클래스 작성에 도움을 주기 위한 것으로 그 자체로는 인스턴스 생성이 불가능 함상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능// abstract를 안붙히면 에러남(메서드, 클래스 전부)abstract class Player { // 추상클래스(미완성클래스) abstract void play(int pos); // 추상메서드(블럭..
1) 다형성의 장점다형적 매개변수하나의 배열로 여러종류 객체 다루기2) 매개변수의 다형성 (다형적 매개변수)참조형 매개변수는 메서드 호출시 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있음메서드의 매개변수에 매개변수의 다형성을 활용하여 조상타입의 참조형 매개변수로 정의해두면 해당 메서드를 호출하여 사용할 때 매개변수의 타입의 자손 타입을 모두 입력할 수 있어 메서드의 활용도가 높아짐 (1) 예제class Product { int price; // 제품의 가격 int bonusPoint; // 제품구매 시 제공하는 보너스점수 Product(int price) { this.price = price; bonusPoint = (int)(price/10.0); // 보너스점수는 제품가격의 10% }..
1) 참조변수의 형변환사용할 수 있는 멤버의 갯수를 조절 하는 것기본형의 형변환은 값이 바뀌지만 참조변수(참조형)의 형변환은 값(참조값, 객체)이 바뀌는 것이 아님 - 중요단지 객체를 참조하는 방식만 변경되는 것일 뿐임상속관계와 구현관계(인터페이스를 구현한 클래스)에서 사용 가능 (1) 예제1FireEngine 객체를 생성하여 참조한 참조변수를 업캐스팅, 다운캐스팅 -> 모두 성공적으로 적용됨업캐스팅: 자식 클래스의 객체를 부모 클래스의 타입으로 변환하는 것 -> 더 일반적인 타입으로 변환, 형변환 타입 생략 가능다운캐스팅: 부모 클래스의 타입으로 참조된 자식 클래스의 객체를 자식 클래스의 타입으로 변환하는 것 -> 구체적인 타입으로 변환, 형변환 타입 생략 불가능업캐스팅, 다운캐스팅을해도 참조값이 바뀌..
1) 캡슐화(1) 접근제어자를 사용하는 이유?외부로부터 데이터를 보호하기 위해서 -> 캡슐화멤버변수에 직접 접근하지 못하게 하고 메서드를 통해 간접적으로 쓸 수 있게 함.외부에는 불필요하고 내부적으로만 사용되는 부분을 감추기 위해 사용함접근제어자는 좁을수록 좋고 필요할 때 넓히는 것이 좋음(2) 캡슐화 예제1 - 캡슐화 전시간을 정의하는 클래스에 hour를 직접 변경하지 못하도록 캡슐화 진행변수들이 default 변수여서 같은 패키지내에서는 마음껏 수정이 가능함class Time { int hour; // 0 ~ 23사이의 값을 가져야 함. int minute; int second;}public class TimeTest { public static void main(String[] args) { T..
1) 제어자 - modifier클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여함접근 제어자는 하나의 대상에 하나만 사용 가능함그 외 제어자는 여러 제어자를 같이 사용할 수 있음순서는 상관없으나 대부분 접근 제어자를 가장 앞에 사용(1) 접근 제어자public, protected, (default), private - 4개 중에 한개만 붙힐 수 있음디폴트는 아무것도 안붙히는 것(2) 그 외 제어자static, final, abstract, native, transient, synchronized, volatile, strictfp 등등public class ex07_write { // 접근 제어자를 가장 앞에 쓰는 것이 관례 // 접근 제어자는 한개밖에 사용 불가함 public stati..
1) 참조변수 super객체 자신을 가리키는 참조변수이며 부모클래스(상위 클래스)의 멤버에 접근할 때 사용함부모클래스의 멤버(super)와 자기자신의 멤버(this)를 구분할 때 사용함this가 자기 자신의 인스턴스 멤버를 가리킨다면 super는 부모 클래스의 인스턴스를 가리킨다고 보면 됨인스턴스 메서드나 생성자에서만 사용할 수 있으며 스태틱 메서드에는 사용할 수 없음class ex7_2 { public static void main(String args[]) Child c = new Child(); c.method(); }}class Parent { int x = 10; } // super.xclass Child extends Parent { int x = 20; // thi..
1) 단일상속Java는 단일 상속만을 허용 (C++은 다중상속 허용)다중상속은 충돌문제가 있어서 다중상속을 제외했음Java는 인터페이스를 이용하면 충돌문제를 해결하면서 다중상속 효과를 낼 수 있음 - 이후에 배움class TvDVD extends Tv, DVD { // 에러 발생}// 조상은 하나만 허용된다. (1) 인터페이스를 사용하지 않고 다중상속처럼 하려면?비중이 높은 클래스 하나만 상속관계로 설정하고 나머지는 포함관계로 설정하면 다중 상속 효과를 낼 수 있음class TV { // 상속 내용 생략}class DVD { // 포함 void power() { 내용생략 } void play() { 내용생략 } void stop() { 내용생략 } void rew() { 내용생략 }}class TvD..