1.래퍼 클래스(Wrapper Class)
//기본형 속도빠름 //기본타입 stack에있음 주소저장x, 값이 저장
-기본형(primitive type)변수 데이터를 객체로 취급해야 할 경우 객체로 포장해주는 클래스 //stack주소저장 heap값저장 비교할때?
-자바는 객체지향 언어지만 기본형이라는 예외를 둔 이유는 성능때문 //파이썬은 기본형x
래퍼 클래스의 필요한 이유
-기본형 변수는 값을 저장하고, 참조형 변수는 주소를 저장하기 때문
-컬렉션 프레임워크(자료구조)는 참조형 변수만을 다루기 때문 //자료찾을때 편한도구
-멀티쓰레딩에서 동기화를 지원하려면 참조형변수가 필요하기 때문 //동기(실행다하고 다음으로 넘어감 ex)티켓 동시에x),비동기(프로그램 진행하다가 로딩진행중에도 프로그램을 사용가능하게하는 것) //멀티쓰레딩 여러개가 한번에 프로그램이 도는것 //배열의단점 크기(갯수)를 지정해줘야함 ,다른타입을 같이 사용x,index번호를 모르면 처음부터 찾아야함
//장점 데이터를 넣을 때 순서대로 저장 index번호
//배열 vs Arraylist (자바의 기능=class) 장점 데이터 갯수를 정하지 않아도됨(편하다),속도는 조금느린단점
래퍼클래스 (heap에 저장) //일반데이터타입을 넣을 수 x 데이터를 참조형으로 넣어줘야해서 래퍼 클래스가 필요.
byte-> Byte
short-> Short
int-> Integer
long-> Long
char-> Character
float-> Float
double-> Double
boolean-> Boolean
문자를 숫자로변환
String num ="100";
System.out.println(num+100);; //100100 문자열이어져서나옴
System.out.println(Integer.parseInt(num)+100); // 200
박싱(Boxing)? 래퍼클래스로 만들어줌
기본타입을 래퍼클래스로 변환
ex) int num =10;
Integer i = new Integer(num);
언박싱(Unboxing)
래퍼클래스를 기본타입으로 변환
int num = i.intValue(); //10을 꺼내서 i에 넣어준다
2.static
-모든 객체가 공유한다는 의미
-static이 붙은 변수는 class 변수라고 부름
(static이 붙지 않은 변수 instance변수라고 부름) //일반적으로 변수라고 부름
-메모리에 우선 로드되므로 속도가 빠름
-메모리가 회수되지 않기 때문에 사용시 주의 //static 객체를 만들지 않아도 메모리에 저장되지만 메모리에서 회수x garvege 에서 지울수x 프로그램 종료 전까지 유지된다.
static 변수에 적용
-모든 객체가 변수를 공용으로 사용 //예제 class Button
블록에 적용 //static 블록
같은 객체가 여러개 만들어지더라도 단 한번만 실행되는 코드블록을 만듬
static{
}
메소드에 적용
객체를 사용하지 않고 클래스.메소드 이름으로 적용하여 사용
ex)Math.random()
//static변수는 class변수 아니면 객체생성할때 static사용
3.추상 클래스 //자식클래스에서 오버라이드해서 재정의 해서 사용해야함
-하나 이상의 추상 메소드를 포함한 클래스
-객체 생성을 할 수 없음(자식 클래스에서 상속하여 객체를 생성,자식 클래스는 또 다른 클래스를 상속받을 수 없음) //new 객체생성x
-변수의 타입으로 선언하는 용도와 상속의 본연의 기능으로 특정한 코드를 하위 클래스로 물려주기 위해 생성
-나머지 기능은 일반 클래스와 동일
왜필요?
-변수의 타입으로 선언하는 용도와 상속의 본연의 기능으로 특정한 코드를 하위 클래스로 물려주기 위해 생성
추상클래스의 다형성
-추상클래스는 "다형성"을 보장하기 위해 나타난 개념
-자식클래스에서 반드시 메소드를 재정의해야함 ->다형성 보장
✅추상화
공통된 행동, 필드를 묶어 하나의 클래스를 만드는 것
✅추상 메서드
메소드 선언만 되어있고 구현부가 없는 메서드
public abstract class 이름{ //abstract
abstract 리턴타입 메서드 이름(); //껍데기만있음
}
4.인터페이스(interface) //추상메소드 vs 인터페이스(틀만있는영수증 내용x 틀만있는? 틀에 대한 가이드)
-자바는 다중 상속을 지원하지 않으므로 인터페이스를 사용해서 다중 상속을 구현
-다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서 다른 클래스 사이의 매개 역할을 담당하는 일종의 추상 클래스와 비슷
-인터페이스는 추상 메소드와 상수만을 포함할 수 있음 --> ""인스턴스 메소드, static메소드도 포함""
접근제어자 interface 인터페이스이름{ //클래스의 틀을 만들어줌
타입 상수명이름 = 값; (상수로 바뀜) //public static final 타입 변수명으로 JVM이 자동으로 변환
public 반환형 메소드이름(매개변수1,매개변수2....); //abstract를 작성하지 않아도 JVM에서 자동으로 abstract를 붙여줌
}
인터페이스 구현
접근제어자 class 클래스이름 implements 인터페이스이름{
}
✅상속과 인터페이스 구현을 동시에 하려면?
접근제어자 class 클래스이름 extends 부모클래스이름 implements 인터페이스이름{
}
✅상속과 다중상속을 동시에 구현하려면?
접근제어자 class 클래스이름 extends 부모클래스이름 implements 인터페이스이름1, 인터페이스이름2....
}
✅API(Application Progarmming Interface)
응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든
인터페이스를 뜻함
✅인터페이스(interface)
개발코드와 객체가 서로 통신하는 접점 역할
//client 정보 제공받는쪽(정보요청)<-> server정보 주는쪽 (정보)
//프로토콜 채팅안의 내용 틀(인터페이스)은 몇번인지 상관없이 고정
상수(final)
-클래스, 변수, 메소드에서 사용할 수 있는 키워드
-변할 수 없는 상태를 나타냄
(final사용)
클래스에서 사용
-상속을 할 수 없게 됨
final class 부모클래스명{
...
}
class 자식클래스명 extends 부모클래스명{ //에러!
...
}
변수에서 사용(인터페이스)
-값을 재할당할 수 없음
final String str ="apple";
str = "banana"; //에러 (final이 붙어서 값을 재정의x)
메소드에서 사용
-오버라이딩을 할 수 없음
class 부모클래스명{
final String method1(){
return 값
}
}
public class 자식클래스명 extends 부모클래스명{
String method1(){ //에러 final이 붙어서!
return 값2
}
}
패키지(Package) //파일정리, 폴더개념을 쓰면 같은 이름으로 사용 가능
클래스 파일들을 체계적으로 관리하도록 사용하는 디렉토리 개념
✅ 패키지를 생성하지 않고 기본 파일들이 저장된 공간을 default package라고 부름 (package 생성x =default 패키지)
접근 제어자
외부에 공개되는 수준을 의미
-public: 모든 외부에서 직접 접근하거나 호출
-protected: 현재 클래스와 동일한 패키지거나 다른 패키지더라도 상속시 접근하거나 호출 (상속필수)
-default: 현재 클래스와 동일한 패키지 내에서만 접근하거나 호출 (접근제어자를 쓰지 않은 경우 default)
-private: 현재 클래스의{} 바깥쪽에서는 절대 접근하거나 호출할 수 없음 (상속을 받아도 직접접근x)
클래스의 접근 제한
-public, default만 사용가능
-public인 경우 외부에 클래스를 노출, default는 현재 패키지에서만 접근할 수 있게 함.
필드의 접근 제한
-public, protected, default, private 모두 사용 가능
-일반적으로 private, public static으로 선언하는 것이 일반적 (public static final주로사용)
메소드 접근 제한
-public, protected, default, private 모두 사용 가능
-추상 메소드의 형태는 private으로 선언할 수 없음 //오버라이딩으로 불러 올 수 없음?
과제.
1.아래 용어에 대해 조사하고 해당 용어에 대한 예를 작성해보자. 1.조사하고 예시만들기
-super 키워드
-this 키워드
-생성자
-오버로딩
-오버라이딩
2.인터페이스에 대해 알아보고 그에 대한 예제를 만들어보자.
예제3개이상