Java Syntax - (7) 전체적인 클래스의 구조

가빈·2023년 12월 11일
post-thumbnail

클래스는 C++에서 있는 개념인데 이것을 바탕으로 자바가 생겼기 때문에 이건 진짜 너무 중요하다!!!
문법은 괜찮으니까 개념이 이해가 될 떄까지 반복해야한다

클래스의 탄생

변수(너무 많아져서) -> 배열(같은 값만) -> 구조체(자료형이 달라도 하나로 묶는 것,상속불가) +기능을 추가하자!
C의 부분 -> 클래스(상속 가능기능) | C++ ---> JAVA가 되었다!


Java에서 제공하는 객체 지향 요소

클래스

  • 일반 클래스
  • 추상 클래스 abstract class~
    : 메서드 중 하나라도 abstract 추상메서드라면 추상클래스가 된다
    *추상메서드 : 함수의 정의가 미완성된 메서드

인터페이스

: 추상클래스와 다르게 모든 메서드가 abstract 인 경우다
모든 필드 -> public static final / 모든 메서드 -> publix abstract



클래스 개념 + 기본 구조

절차지향형 VS 객체지향형

붕어빵을 사러 가본다고 가정하면,,,

절차지향형 프로그래밍 : 순서에 맞춰서 단계적으로 진행하고 명령어 나열
1. 버스탈지 택시탈지 지정
2. 버스탄다고 하면 구체적으로 어떤 버스를 탈건지
3. 어느 곳에 있는 정류장에서 내릴건지
....

객체지향형 프로그래밍 : 객체를 구성하고 객체를 기준으로 해서 프로그래밍(필드/메서드)

버스 객체

  • 버스 번호 객체
  • 해당 정류장 객체
  • 간선버스? 마을버스? 경로 객체

나 (객체)

  • 벨누르기 객체
  • 내리기 객체
  • 찾아가기 객체

class, object, instance의 정의

class : 틀
object : 개체들

  • 객체 내에는 멤버(필드,메서드, 이너클래스)가 있고
  • 이 멤버들을 사용하려면 객체를 만들어야 한다

인스턴스화 : 클래스로 객체를 만들어내는 일


클래스의 활용

클래스 구조

이전에 배운 것처럼 파일 이름과 public클래스 이름은 동일해야한다!

											A.java
                                            
[클래스 밖]
1.package
2.import
3.외부클래스(external class)

	public class A {
    [클래스 안]
    1.필드
    2.메서드
    3.생성자
    4.이너클래스
    }

⭐️⭐️클래스 외부

package

: 하위 폴더 개념

import

: 다른 패키지(폴더)의 클래스를 참조

외부클래스(external class)

: 외부의 다른 클래스
❗️public 키워드 사용불가!!

⭐️⭐️클래스 내부

필드(멤버)

: 클래스 내에서 선언되어서 속성을 나타내는 변수(int, double ...)

메서드(멤버)

: 클래스의 기능
리턴타입+메서드이름+()+{}

생성자

: 클래스로 객체를 생성하게 해주는 것
생성자이름 +()+{}
❗️ 클래스 이름과 생성자의 이름이 동일 해야한다

내부클래스(inner class)(멤버)

:클래스 내부에 있는 클래스




객체의 생성 및 활용

객체의 생성

생성 코드 :A a = new A();-> 클래스

메모리
클래스 영역 : 메서드(실제 저장), 클래스A 생성
스택 영역 : 참조변수 a
힙 영역 : new키워드로 인해 힙에 저장되고 생성자로 인해 객체 생성(인스턴스 필드. 메서드(정보들만 저장). 이너클래스)

메서드의 공유
: 모든 생성 객체는 동일한 메서드(기능)을 가진다

ex)

자동차 car1 = new 자동차(...);
자동차 car2 = new 자동차(...);
//이렇게 백번 쓸 수 없으니

 class 자동차 {
 String color;
 void drive(){...}// drive기능을 하나로 메서드영역에 지정하고 공유해서 각 객체에서 활용한다.
}
 

객체의 활용

: 힙 메모리에 저장되어있기 때문에 참조변수명을 통해서만 가능하다
참조변수명.필드명 참조변수명.메서드명
❗️반복해서 말하지만 메서드는 메서드영역에 있다

class a {
  int m = 3;
  void print(){
  	System.out.println("객체 생성 및 활용")
  }
}
//필드의 활용
System.out.println(a.m);//3
//메서드의 활용
a.print() //객체 생성 및 활용

profile
지금부터 시작!

0개의 댓글