
클래스는 C++에서 있는 개념인데 이것을 바탕으로 자바가 생겼기 때문에 이건 진짜 너무 중요하다!!!
문법은 괜찮으니까 개념이 이해가 될 떄까지 반복해야한다
변수(너무 많아져서) -> 배열(같은 값만) -> 구조체(자료형이 달라도 하나로 묶는 것,상속불가) +기능을 추가하자!
C의 부분 -> 클래스(상속 가능기능) | C++ ---> JAVA가 되었다!
abstract class~: 추상클래스와 다르게 모든 메서드가 abstract 인 경우다
모든 필드 -> public static final / 모든 메서드 -> publix abstract
붕어빵을 사러 가본다고 가정하면,,,
절차지향형 프로그래밍 : 순서에 맞춰서 단계적으로 진행하고 명령어 나열
1. 버스탈지 택시탈지 지정
2. 버스탄다고 하면 구체적으로 어떤 버스를 탈건지
3. 어느 곳에 있는 정류장에서 내릴건지
....
객체지향형 프로그래밍 : 객체를 구성하고 객체를 기준으로 해서 프로그래밍(필드/메서드)
버스 객체
나 (객체)
class : 틀
object : 개체들
인스턴스화 : 클래스로 객체를 만들어내는 일
이전에 배운 것처럼 파일 이름과 public클래스 이름은 동일해야한다!
A.java
[클래스 밖]
1.package
2.import
3.외부클래스(external class)
public class A {
[클래스 안]
1.필드
2.메서드
3.생성자
4.이너클래스
}
: 하위 폴더 개념
: 다른 패키지(폴더)의 클래스를 참조
: 외부의 다른 클래스
❗️public 키워드 사용불가!!
: 클래스 내에서 선언되어서 속성을 나타내는 변수(int, double ...)
: 클래스의 기능
리턴타입+메서드이름+()+{}
: 클래스로 객체를 생성하게 해주는 것
생성자이름 +()+{}
❗️ 클래스 이름과 생성자의 이름이 동일 해야한다
:클래스 내부에 있는 클래스
생성 코드 :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() //객체 생성 및 활용
