바닥부터 시작하는 프로그래밍/국비JAVA

12일차(클래스, 인스턴스)

예얀 2024. 3. 20. 11:10

어제까지 했던건 자바 절차적 (순서있고 논리적)

c언어는 절차적이지않음 (클래스 존재X)

c++ 이 (객체지향) (c언어에서 업글)

 

추상적이다 (레벨) 이있음   

 

뒤로갈수록 추상레벨이 낮음

 

ex 동물 - 샴 고양이 - 바둑이 (고양이이름) 

     동물 - 사람 - 남자,여자 - 주예연

 

변수명은 구체적으로 지어야함

 

 

객체(object)란 추상화레벨이 매우매우 높은것임

 

객체 = 명사

객체는 속성이 있는 모든 명사는 객체가 될 수 있다 (프로그래밍 관점에서)

 

ex) 사람은 나이,성별,키,이름 등 속성이 있다.

 

(일상생활 관점에서) 와 조금 다름.

 

클래스는 코드를 분리하는것.

클래스는 논리하고 상관이없다.

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------

클래스 공부 목표!!

 

수동적목표

- API를 이해하기위해

 

능동적목표(응용 및 활용) - 평생 쌓아 올려야 할 목표

설계

----------------------------------------------------------------------------------------------------------------------------------------------------------------

1. 클래스 만들면

2. 인스턴스도 만들어야한다.

3. 접근해서 활용하기 ( . (접근연산자) )활용해서 값넣기

클래스 정의 문법 및 속성 만들

속성, 필드, 멤버 변수, 인스턴스변수는 다 같은표현이고 하늘색이다.

인스턴트 생성 문법 등등

정확하게는 StudentInfo s1 = new StudentInfo(); 뒤에 밑줄 그은곳부터가 인스턴스 생성 문법임

앞에  StudentInfo s1이 없으면 쓰레기가 되어서 자동삭제 시키므로 꼭 붙여줘야 함 - 16번줄 참고

 

 

 

StudentInfo의 인스턴스 2개 s1, s2

-----------------------------------------------------------------------------------------------------------------------------------------------

이렇게 넣게되면 

아래 기존 heap 메모리 소멸하고 스택에 넣어진 주소값은 바

-------------------------------------------------------------------------------------------------------------------------------------------------------

새로운 예제

클래스 Student 안에 score가 있고 새로운 Score클래스가 있음
11번 12번줄 잘보고 아래 사진 보기

 

설명 1,12번줄 주석 참고

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

이렇게 쓰게되면 인스턴스 new Student(); 하게되면  연쇄적으로 가능해서 새로 메인 메소드에서 new Score 안써도 가능

이렇게 하게되면 결합도가 높은케이스다... (대부분 이렇게는 안함.. 걍 문법적으로는 가능하다? 알고있기) 

 

근데 이렇게 하면 s1 이 소멸되면 heap 연결된 메모리가 다 소멸되기때문에 클래스 Score 관련 메모리도 연쇄적으로 소멸됨.

 

설명 1,12번줄 주석 참고