티스토리 뷰
주소에 접근하는 게 대괄호(배열)
주소를 쓰는 이유 : 영역의 구분 없이 다른 영역의 값을 수정할 때 사용
자바에서는 주소의 접근에 대한 연산자 자체가 없음
c언어에서는 직접 주소에 접근하는 연산자가 있음
하드웨어 접근 가능, 개발자를 100% 믿음 -> 핵, 크낵, 버그만들 때 사용
■클래스(반)
공통 요소를 한 번만 선언해 놓고 가져다 사용만 하도록 설계한다.
1.타입이다
클래스 안에 선언된 변수와 메소드를 사용하고 싶다면,
해당 클래스 타입으로 변수를 선언해야 한다.
2.주어이다
Monkey.eat("바나나");
주어 동사 목적어
대문자로 시작하는 이유 : 모든 문장 앞에서 실행하기 때문에
■클래스에 선언된 것 > 필드(멤버)라고 부름
클래스 안에 필드가 메모리(하드웨어)에 올라가야 접근할 수 있음
메모리에 해당 클래스 필드를 할당하고 주소값을 가져오는게 new 클래스명();
new >> 힙메모리에 저장
■자동차 엄마차 = new 자동차();
메모리 할당된 필드의 ★주소값★ = 생성자 : 메모리에 클래스의 필드를 생성
└엄마차에 담김, 엄마차.필드내용
자동차 아빠차 = null; // 어떤 차를 살지 모르겠음
주소를 모를 때 넣는 초기값 = null;
생성자 >> 램메모리에 해당 클래스의 필드를 생성하고, 그 주소값까지 가져오는 게 역할
■클래스 선언
class 클래스명 {
필드(변수, 메소드)
}
영역이 필요하니 중괄호를 써야 함.
■클래스의 필드 사용
1.객체화(instance) : 객체(instance variable)를 만드는 작업, 추상적인 개념을 구체화시키는 작업.
클래스명 객체명 = new 생성자(); >> 객체화
객체명.필드명
※ .(마침표) : 하위 연산자, 멤버변수 접근 연산자, 닷 연산자, 점 연산자
2.static일 경우 클래스명으로 바로 접근 가능
■추상적인 개념을 구체화시켜놓은 게 객체
(클래스 : 자동차, 도형 / 객체 : 엄마차, 세모)
instance 실체화시키다
instance variable 객체화로 만든 객체(인스턴스 변수, 공적인 자리에서는 정확하게 표현하기)
■생성자
클래스 이름 뒤에 소괄호가 있는 형태, 메소드와 기능이 똑같지만 메소드라고 부르지 않는다.
생성자는 리턴이라는 기능이 존재하지 않기 때문이다.
메소드라고 부르면 안되지만 기능, 문법은 메소드랑 똑같음
apply() :메소드
Apply() :생성자
리턴타입자체가 없음 > 메소드는 리턴타입이 있음
생성자는 개발자가 임의로 리턴을 하지 못하게 막아놨음
할당된 필드에 주소값을 이미 리턴값으로 가지고 있음
사용한 거 통채로를 리턴값으로 봐야 함. 리턴값 = 할당된 필드의 주소값.
■생성자의 목적
1. 해당 클래스의 필드를 메모리에 할당한 후 부여된 주소값을 가져온다.
2. 초기화(클래스 안에 변수)
키워드(class 등)는 프로젝트 이름으로 쓸 수 있다
클래스 이름이나 패키지 이름은 키워드로 쓸 수 없음.
주소값이 들어가 있으면 > 객체(배열 제외, 배열은 배열임)
값이 들어가 있으면 > 변수
클래스를 선언하면 컴파일러가 자동으로 기본생성자 만들어줌, 생략해도 사용 가능.
객체별로 갖고 있는 주소값이 다르다, 서로의 구분점은 주소값임.
■기본 생성자
매개변수와 실행할 문장이 따로 없다.
클래스 선언 시, 자동으로 선언되며, 사용자가 직접 생성자를 선언하게 되면
기본 생성자는 없어진다.
============================================================================
this : 접근한 객체가 갖고있는 주소값
■this
필드에 접근한 객체가 누구인지 알아야 해당 필드에 접근할 수 있다.
이 때 접근한 객체가 가지고 있는 필드의 주소값을 this라는 변수에 자동으로 담긴다.
(class : Road)
생성자 단축키 : alt + shift + s > o
s누르고 스페이스로 체크
initialize 초기화하다
■다형성(polymorphism) 폴리모르피즘
메소드의 성질(이름은 하나, 형태는 다양)
1.오버로딩(Overloading) : 매개변수의 개수나 타입이 다를 땐 이름을 똑같이 해도 된다.
매개변수의 개수 또는 타입이 다르면 동일한 이름의 메소드로 선언할 수 있다.
2.
지역변수 : 직접 초기화
전역변수 : 자동으로 초기화가 됨
(class : Shop)
[실습]
모여라 셀럽동물
이름, 나이, 먹이, 먹이개수, 생명
1.먹기
먹이가 있다면,
먹이 1개 사용, 생명 1 회복
2.자기
3초동안 생명 1 회복
3.산책하기
생명 1 감소
랜덤한 퀴즈를 출력하고 정답을 맞추면 먹이 2개 획득
오답 시 생명 1 감소
생명이 0이 되었다면 강제로 잠재우기
4.작별인사하기(나가기)
(class : Animal, Quiz)
'2022 > java 2' 카테고리의 다른 글
day08[상속,저장기억부류,접근권한제어자] (0) | 2022.08.08 |
---|---|
day07[클래스 실습] (0) | 2022.08.08 |
day05[2차원배열,메소드] (0) | 2022.08.08 |
day04[반복문(while),배열] (0) | 2022.08.08 |
day03[연산자,조건문(if,switch),반복문(for)] (0) | 2022.08.08 |