목록Java (42)
겉바속촉
접근 제어자란 ? 멤버 또는 클래스에 사용됨 외부로부터 접근을 제한함 클래스, 멤버변수, 메서드, 생성자에서 접근 제어자가 사용될 수 있음 접근제어자 -> public, protected, default, private 제어자 같은 클래스 같은 패키지 자손클래스 전체 public O O O O protected O O O default O O private O 대상 사용가능한 제어자 클래스 public, default, final, abstract 메서드 모든 접근 제어자, final, abstract, static 멤버변수 모든 접근 제어자, final, static 지역변수 final - 메서드에 static과 abstract 함께 사용불가 - 클래스에 abstract와 final을 동시 사용불가 -..
제어자란 ? 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미 부여 접근제어자와 그 외의 제어자로 나뉨 하나의 대상에 여러 개의 제어자를 조합해서 사용하는 것이 가능 단, 접근제어자는 하나만 사용 가능 접근제어자 -> public, protected, default, private 그 외 -> static, final, abstract, native, transient, synchronized, volatile, strictfp 1. static 클래스의, 공통적인 멤버변수, 메서드, 초기화 블럭에서 사용 멤버변수 - 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 됨 - 클래스변수는 인스턴스 생성하지 않고도 사용 가능 - 클래스가 메모리에 로드될 때 생성됨 메서드 - 인스턴스를 생성하지 않고도..
import 란 ? 사용할 클래스가 속한 패키지를 지정하는데 사용 import문을 사용하면 클래스를 사용할 때 패키지명을 생략할 수 있음 java.lang 패키지의 클래스 : import하지 않아도 사용 가능 (String, Object, System, Thread...) 패키지문과 클래스 선언 사이에 import문 선언
패키지란? 서로 관련된 클래스와 인터페이스의 묶음 물리적으로 폴더를 의미 서브패키지를 가질 수 있고 '.'으로 구분 클래스의 실제 이름은 패키지명이 포함된 것 : String 클래스의 full name은 java.lang.String rt.jar : Java API의 기본 클래스들을 압축한 파일 : JDK설치경로\jre\lib 하나의 소스파일에 둘 이상의 클래스가 포함된 경우, 모두 같은 패키지에 속하게 됨 모든 클래스는 하나의 패키지에 속함 // 패키지가 선언되지 않은 클래스는 자동적으로 디폴트 패키지에 속함 (디폴트 패키지 = 이름 없는 패키지) classpath 클래스파일 (*.class) 찾는 경로 구분자 => ';' 패키지가 포함된 폴더나 jar파일(*.jar) 나열 클래스패스가 없으면 자동적으..
인스턴스 자신을 가리키는 참조변수 인스턴스의 주소가 저장되어 있음 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재 super란 ? this와 같은 개념. 조상의 멤버와 자신의 멤버를 구별하는 데 사용. 조상의 생성자 - 자손클래스의 인스턴스를 생성하면, 자손의 멤버와 조상의 멤버가 합쳐진 하나의 인스턴스가 생성됨. - 조상의 멤버들도 초기화되어야 하기 때문에 자손의 생성자의 첫 문장에서 조상의 생성자를 호출해야 함. - 호출하지 않으면 자동적으로 컴파일러가 super(); 를 생성자의 첫 줄에 삽입.
오버라이딩이란 ? 조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것 override : ~위에 덮어쓰다(overwrite), ~에 우선하다 선언부 동일해야 함 : 이름, 매개변수, 리턴타입 접근제어자를 좁은 범위로 변경하는 것 불가능 : 조상 메서드가 protected인 경우 => 범위가 같거나 넓은 protected , public으로만 변경 가능 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없음 오버로딩 : over loading // 기존에 없던 새로운 메서드 정의 - new 오버라이딩 : overriding // 상속받은 메서드의 내용을 변경하는 것 - change, modify
상속이란? 기존의 클래스를 재사용하여 새로운 클래스 작성 두 클래스를 조상과 자손으로 관계를 맺어줌 자손은 조상의 모든 멤버를 상속받음 (단, 생성자와 초기화블럭은 제외) 자손의 멤버갯수는 조상보다 같거나 많다. class 자손클래스 extends 조상클래스 { // } 공통부분 : 조상에서 관리 개별부분 : 자손에서 관리 조상의 변경은 자손에 영향 O 자손의 변경은 조상에 영향 X 한 클래스의 멤버변수로 다른 클래스를 선언하는 것 작은 단위의 클래스 먼저 생성 후 => 이들을 조합하여 하나의 큰 단위의 클래스 생성 java는 단일상속만 가능, 다중상속 불가능 비중이 높은 클래스 하나만 상속관계로 함 비중이 적은 나머지 클래스는 포함관계로 함 모든 클래스의 최고조상 조상이 없는..
시작은 flush함수였는데.... flush함수가 도대체 뭔가하고 구글링하다가 I/O랑 Stream을 공부해본당 I/O 는 Input이랑 Output 줄여서 많이들 I/O라고 사용한다 그리고 이것은 데이터 운반에 필요한 연결통로인 Stream을 통해 이루어진다 문제는 한방향으로만 흐르기 때문에 i와 o가 동시에 이루어질 수 없슴슴슴 동시에 수행하고 싶다면 입력stream, 출력 stream 2개가 필요 Stream Byte 형태로 데이터 운반 큐의 FIFO(First in First Out) 구조 데이터 흐름 구조 : Source(시작) - input stream - output stream - Sink(끝) inputStream은 임포트 필수이며 1개의 문자만 가져옴 (int형) 출력할 때 : flus..