Class란?
Class(클래스)란?
JAVA 의 기본단위
자료형의 일종
JAVA 에서 수 많은 클래스들을 미리 만들어놨지만,
ex) Random, Scanner, ...
개발자(우리)가 새로 정의할 수 있음
대문자로 시작하는 것이 규칙
메서드(함수), 변수명 등은 대문자로 xxxxx
멤버변수
필드
속성
attribute
property
원시타입들은 new X
배열,클래스 객체(우리가 만든 자료형)들은
"개발자 영역(heap memory)"을
사용해야하기 때문에 new O
student
우리(개발자)가 만든 변수를
"객체"라고 부른다.
Student student = new Student();
개발자가 만든 자료형 Student 클래스 타입의
변수 student 객체를 생성하겠습니다.
new 연산자를 사용해서 heap memory 영역에 생성하겠습니다.
public은 공개범위 -> 나중에 설명
static == 객체와 무관하게
클래스(객체)에 포함되는 함수(메서드)들에게는 static이 붙지않는다.
객체지향언어를 사용하면
"누가 함수(메서드)를 호출했느냐"에 따라 결과가 달라진다.
객체지향언어를 한마디로 정의하려면
>>>함수(메서드)에게 주어(주체)가 생기는 언어<<<
일반적인 함수는 주어(주체)가 없고
메서드(멤버함수)는 주어(주체)가 있다.
★ 함수 != 메서드 ★
같은 메서드인데 다른 결과가 나오는 현상
== 다형성
== 다형성이 실현(구현)되었다.
new 연산자를 사용하면
== 개발자 메모리 영역(heap memory)에 변수를 생성하면 자동 초기화 해준다
★ 강제
~~ 기능 덕분에 00 을 "강제"할 수 있다. (좋은거,많이 쓰는거)
자유도가 높으면 사람이 많아질수록 결과물이 제각각이다.
프로그래밍 언어에는 하면 안되거나 반드시 해야하는 것들을 "강제" 하는
기능들이 많이 있다.
Student() 함수에 대하여,,,
클래스와 이름이 똑같은 함수
new 연산자 뒤에서 호출이된다.
멤버변수를 초기화하는 역할
"생성자"
함수를 호출해서 사용하려면
"선언"를 해야됨
생성자 없이는 객체를 생성할 수 없기 때문에
JAVA 에서 인자가 없는 생성자를 기본 제공해준다.
기본제공되는 생성자를
"기본 생성자(디폴트 생성자)" 라고한다.
생성자란?
최초에 클래스를 정의하면 JAVA가 인자없는 생성자(기본생성자)를 제공해줌
클래스와 이름이 같으면 output을 명시하지 않는다.
생성자를 사용자(개발자)가 1개이상 정의하면
JAVA가 더이상 기본 제공을 안한다.
함수명 중복정의(오버로딩)