개발/Java

자바 기초1

반응형

get/set : 정보은닉

둘중 하나만 제공해서 필요한 것만 사용하게 하거나

멤버변수에서 값을 받을 때 원하는 형식을 받기 위해 사용

변수를 핸들링 하기 위해 사용

 

 

지역변수 : 사용하고 사라짐

맴버변수 : 인스턴스에서 사용되고 사라짐, int, char, double

초기화하지 않으면 맴버변수는 0,null로 초기화 됨

참조변수 : String, 객체

클래스변수 : 데이터 메모리에 올라가서 프로그램 종료시 사라짐

 

 

static : 로딩될때 데이터 메모리에 올라가서 프로그램 종료시 사라짐

공통적으로 사용하거나 고정된 값을 메모리놓고 쓸 때 사용

 

 

메모리 구조 : 데이터 메모리 - 스택 메모리 - 힙 메모리

데이터 메모리 : static 메모리, 프로그램 종료 시 사라짐

스택 메모리 : 함수 실행시 올라갔다가 사용이 끝나면 사라짐

힙 매모리 : 참조변수들의 값을 저장, 스텍 메모리에서는 주소를 가지고 힙 메모리 참조변수들의

 

 

싱글톤 : 하나의 인스턴스를 static 으로 만들어서 공통적으로 사용

private static Singleton instance = new Singleton();

private Singleton(){};

public static Singleton getInstance(){

return instance;

}

 

1. 객체를 private static으로 만들고

2. 기본 생성자를 private로 만들고

3. 인스턴스 반환 메소드를 public static 으로 만들어서 return 해준다

 

 

this : 자기 자신을 호출

this.height : 자기 변수 호출

this() : 자기 메소드 호출

 

 

객체/인스턴스 차이

객체는 선언만 한것 :  Car car;

인스턴스는 생성해서 메모리에 올라간 것 : Car car = new Car();

 

 

생성자(Construct)

생성자를 생성하지 않으면 디폴트 생성자가 만들어짐

 

 

오버라이딩

메소드 제정의

 

오버로딩

같은 이름의 메소드를 입력값을 다르게 해서 사용하는 것만

 

 

public, default, private, protected

public : 같은 프로젝트에서 사용

default : 같은 페키지 내에서 사용

private : 해당 클래스에서만 사용

protected : 상속받은 클래스에서만 사용

 

 

break,continue

break : 밑에 무시하고 해당 제어문 나감

continue : 밑에 무시하고 다음 실행

 

 

배열[] : 물리적 논리적 주소가 같음

링크드리스트 : 필요할 떄 마다 생성 가능, 물리적으로 떨어져잇음

길이를 처음에 선언해야한다

객체 배열을 만들면 배열만 만들어지기 떄문에 안에서 사용하는 객체는 따로 인스턴스를 만들어야 한다

ex) Student[] student = new Student[2];

student[0] = new Student();

student[1] = new Student();

 

 

ArrayList

배열을 편하게 하기 위해서 제공하는 페키지

사용하는 객체는 따로 생성을 해서 list에 넣어줘야 한다

ArrayList<Student> studentList = ArrayList<Student>();

Student student = new Student();

studentList.add(student);

 

 

상속

하위클래스에서 상위클래스를 사용 할 수 있음

다중 상속 되지 않음

상속 받는 클래스는 extends 사용

오버라이딩가능

기본 생성자가 없으면 생성자 오버라이딩 필요하다

Car car = new Avante();

car.drive();

상속받은 객채로 생성가능함. 오버라이딩 했으면 car가 아닌 avante에서 메소드를 불러온다

 

 

다형성

하나의 코드가 여러 자료형으로 구현되어 실행되는 것

객체지향언어의 특징

모든 객체에 대해서 생성하는것이 아닌 상위 클래스로 만들어서 사용가능

if문을 많이 줄일 수 있다

 

 

다운캐스팅

Car car = new Avante();

(Avante)car.drive(); 형변환

Avante 의 메소드와 변수 사용가능

 

 

istanceof

인스턴스객체인지 아닌지 알고 싶을때 사용

안정적으로 하기 위해 체크해주는 것이 좋다

 

 

추상클래스

abstract

무조건 구현해야 함

인스턴스화 불가

public abstract void drive(); 중괄호 없이 생성

 

 

템플릿 메서드

프레임워크처럼 큰 틀이 만들어져 있음

상속받은 클래스에서 못쓰게 하려면 final 사용가능

 

 

final

final은 상속되지 않고 오버라이딩 불가

변경될 수 없는 상수임

 

 

인터페이스

명세와 같음

인터페이스에서 선언한 변수는 상수가 되고 메서드는 추상메서드가 된다

인스턴스화 할 수 없음

내부가 어떻게 구현됫는지 알 필요가 없이 인터페이스만 보고 사용가능

 

implements 구현

인터페이스를 구현하는데 사용 다중상속은 안되지만 다중구현은 된다

반응형