Class
1.Class
- 관련있는 속성(변수 - property)과 메소드를 모아놓은 사용자 정의 자료형(개발자가 직접 만드는 자료형)
- 프로그래밍 언어나 프레임워크 제작 회사에서 제공하는 클래스 - API, SDK
- 사용자가 제작하는 클래스
- 다른 개발자가 만든 클래스 -> 3rd party
2.Class 생성
접근지정자 class 클래스이름 extends 상위클래스 이름 implements 인터페이스 이름 나열{
속성
생성자
메소드
}
1) 접근지정자: private, protected, package(생략 - default), public: 클래스의 사용 범위 지정
2) 클래스 종류: abstract, final, static, 생략
3) class, 클래스 이름은 생략 불가
4) extends: 상속을 받기 위해서 사용, 자바는 단일 상속만 지원하므로 상위 클래스는 1개만 존재,
생략한다면 Object 클래스로부터 상속받은것으로 간주함
5) implements: 인터페이스를 구현하기 위해서 사용, 생략 가능하고 여러 개의 인터페이스 구현 가능
3. 객체 지향(object oriented programming)
- 관련있는 속성이나 메소드를 클래스로 만들고 이 클래스를 이용해서 인스턴스를 만들어 사용하는 프로그래밍 기법
- 최근의 프로그래밍언어는 객체 지향을 지원한 상태에서 함수형 프로그래밍을 같이 지원
(자바는 함수형 프로그래밍을 지원하지 않지만 람다를 이용해서 함수형 프로그래밍과 유사한 방식을 제공
4. 객체 지향 특징
1) Encapsulation(캡슐화) - 클래스를 만드는 방법
2) Inheritance(상속)
3) Polymorphism(다형성) - 동일한 코드가 호출하는 객체에 따른 메소드를 호출하는 것
5. 객체 지향 장점
1) 재사용성이 증가
2) 신뢰성 높은 프로그래밍 가능
6. Class와 Instance
class: 모형
instance: class를 기반으로 메모리를 할당받은 것
object(객체): 사용가능한 모든 것
int a = 10; // 객체 -> 클래스가 아닌 것으로 생성
Integer a = 10; // 객체이며 인스턴스 -> 클래스를 이용해서 생성
7. Instance 생성
- new 생성자(); // 생성자- 클래스를 기반으로 메모리를 할당하고 메모리의 참조를 리턴
클래스이름 변수명 = new 생성자(매개변수); //인스턴스를 만들고 그 참조를 변수에 대입
ex)
// 인스턴스를 다른 곳에서 사용하기 위해 참조를 st(인스턴스)에 대입
Student(클래스이름) st(변수명) = new Student(생성자)() (매개변수 없음);
8. 명명법
- Class 이름은 첫글자를 대문자로 하고 나머지는 소문자, 2개 단어 이상의 조합으로 할 때는 각 단어의 첫글자는 대문자로.
특별한 경우에 대문자의 연속으로 만들기도 함(약어를 사용한 경우)
- 클래스의 구성 요소 중에서 속성과 메소드는 소문자로 시작하는 것을 권장
9. java 파일 규칙
- 일반적으로 하나의 파일에 하나의 클랫그를 생성
- 파일이름은 클래스이름.java
- 하나의 파일에 여러 개의 클래스를 생성할 수 있음, 이 때 public클래스는 한개여야 하고,
public클래스가 있다면 해당 클래스 이름으로 파일을 생성해야 함.
(안드로이드에서 하나의 파일에 여러개의 클래스를 만드는 경우가 종종 있음)
10. main 메소드를 소유한 클래스
- Java Application은 main메소드를 소유한 클래스만 실행이 가능.
- 실행을 할 때는 java 클래스이름으로 실행.
IDE에서는 main 메소드를 소유한 클래스를 선택하고 run.