목록JAVA/개념정리 (29)
Frog is cry
내부 클래스(inner class) 클래스 내부에 클래스를 선언하여 외부 클래스의 필드 접근에 용이하게 하기 위함. 내부 클래스를 사용하는 이유 A라는 클래스에서 b라는 작업이 자주 쓰이고 이 작업은 B클래스를 만들어야 쉽게 관리할 수 있다. 하지만 다른 클래스에서 b작업이 필요 없거나, B클래스를 외부에 노출시키고 싶지 않을 때 사용한다. 이것을 캡슐화라고 한다. 내부 클래스는 GUI개발시 많이 사용된다. 내부 클래스 선언 방법 외부클래스 외부객체 = new 외부생성자(); 외부클래스.내부클래스 내부객체 = 외부객체.new 내부생성자(); ---------------------------------------------------------------------- 익명 내부 클래스(Anonymous i..
Storage class(저장기억부류) Stack Data영역 [지역][전역] [정적] 초기화직접 자동 생명주기}new 프로그램 종료시 보안성상중 하 ------------------------------------------------------------------------ 접근권한 제어자 default: 다른 패키지에서 접근 불가 public: 모든 곳에서 접근 가능 protected: 다른 패키지에서 접근 불가(단, 자식은 가능) private: 다른 클래스에서 접근 불가 private은 직접접근을 막을 때 사용하고, 간접접근으로 수정하도록 한다. 1. 생성자로 초기화 할 수 있다. 2. public 접근자인 getter와 setter 메소드로 간접 접근한다. 반드시 private필드 선언시 g..
JAVA2 Casting - up casting 부모 타입에 자식 값을 넣는 작업. 모든 자식은 부모 타입이므로 여러 자식들을 하나의 타입으로 관리하고자 할 때에는 up casting을 통해 관리한다. 하지만 부모의 메모리 할당 크기가 자식 메모리 할당 크기보다 더 작기 때문에 자식에서 추가한 필드들은 모두 잘려서 들어간다. - down casting 자식 타입에 부모 값을 넣으면 오류이다. up casting된 객체를 다시 자식 타입으로 변경하는 작업이 바로 down casting이다. up casting된 객체는 타입은 부모이지만 값은 자식 값이기 때문에 오류없이 가능하다. 자식에서 새로 추가한 필드를 다시 사용하고 싶을 때 down casting을 한다. Casting을 사용하는 이유 여러 클래스들..
다형성(Polymorphism) 1. 오버로딩(Overloading) : 넘쳐서 불러오기 매개변수의 타입 혹은 개수가 다르면 같은 이름의 메소드로 선언할 수 있다. 2. 상속(inheritance) 1. 구현된 클래스에 있는 필드를 새로 만드는 클래스에서 그대로 사용하고 싶을 때 필드를 다시 선언하는 것이 아니라 기존 클래스에서 그대로 받아 와서 사용한다. 이 때 상속이 필요하다. 2. 여러 클래스를 만들 때 공통된 필드들이 반복해서 선언된다. 이 때 부모 클래스를 선언하고 그 안에 공통된 필드들을 구현한다. 자식 클래스들은 그대로 상속받아 사용한다. 상속 방법 class A{ A필드 } class B extends A{ A, B필드 } A : 부모 클래스, 상위 클래스, 슈퍼 클래스, 기반 클래스 B ..
클래스(반) 공통적인 요소들이 모여있는 곳. 1. 주어이다. Monkey.eat("바나나"); 원숭이가 먹는다 바나나를 주어 동사 목적어 영어는 항상 주어가 앞에 나오고, 맨 앞에는 대문자로 시작한다. 바로 클래스가 주어이다. 2. 타입이다. 선언이 반복되면 효율이 떨어지고 처리비용이 증가한다. 그래서 반복적인 선언을 묶고 이름을 붙여서 관리하고 이 것을 클래스라고 부른다. 클래스에는 한 번씩만 선언하고 선언된 요소들을 필드 또는 멤버라고 한다. 만약 클래스에 있는 필드를 사용하고 싶다면 그 클래스 타입의 변수를 선언해야 사용가능하다. 이 때 이 변수를 객체라고 한다. 클래스 선언 class 클래스명{ 필드(객체, 메소드) } 클래스 사용 객체화 클래스명 객체명 = new 생성자(); 클래스는 추상적이다..
메소드 : 이름 뒤에 소괄호. 단, 키워드()는 메소드가 아니다!! ★메소드는 저장공간이다. 선언시 작성했던 실행할 문장들은 Text영역에 할당되고 주소값이 생긴다. 이 주소값을 메소드가 가지고 있고 사용할 때마다 해당 주소로 가서 실행할 문장들을 읽고 해석한다. f(x)=2x+1 메소드이름매개변수리턴값 메소드 선언 (1)리턴타입 (2)메소드명(자료형 (3)매개변수명,.....){ (4)실행할 문장; (5)return 리턴값; } (1) 리턴 값의 타입을 작성한다. 만약 리턴값이 없다면 비워놓지 않고 void를 적는다. (2) 동사로 작성한다(연필(매개변수)을 쓴다(메소드)). (3) 생략 가능하다. 매개변수가 없으면 외부에서 값을 전달받을 수 없다. (4) 생략 가능하다. (5) 생략 가능하다. 메소드..
2차원 배열 배열 안에 배열 2차원 배열의 선언 자료형[][] 배열명 = { {값1, 값2, 값3}, {값4, 값5, 값6} }; 자료형[][] 배열명 = new 자료형[행][열]; 예)int[][] arrData = new int[2][3]; □: arrDataarrData.length ↓ □□: arrData[?]행의 길이arrData[?].length ↓ □□□ □□□: arrData[?][?] 열의 길이 2차원 배열은 행 배열의 시작 주소를 가지고 있고 행에는 각 행에 맞는 열의 주소가 들어있다. 따라서 한 번 접근하면 값이 아닌 열의 시작주소값이 있고 두 번 접근해야 값이 나온다. 따라서 2차원 배열은 대괄호가 2개이다. 첫번째 접근하는 곳은 행이고, 그 다음 접근하는 곳이 열이기 때문에 [행]..
배열(저장공간의 나열) 1. 변수를 여러 개 선언하면 이름도 여러 개 생긴다. 이름이 많아지면 관리하기 힘들고 매번 선언해야 한다. 이런 비효율적인 작업을 배열로 해결한다. 배열은 여러 칸을 딱 한 번만 선언하기 때문에 이름도 하나이기 때문이다. 2. 규칙성이 없는 값에 규칙성을 부여하기 위해서. 배열의 선언 자료형[] 배열명 = new 자료형[칸수]; 자료형[] 배열명 = {값1,....}; new 뒤에 있는 것을 Heap 메모리에 할당하는 명령어. 정적배열과 동적배열 - 정적배열 : 크기를 한 번 고정시켜 놓으면 프로그램 실행시 바뀌지 않는다. - 동적배열 : 프로그램 실행 중에 크기가 변경될 수 있다. 자바는 동적배열만 존재한다! 배열의 사용 int[] arData = {4,5,1,9}; arDat..