클래스(Class)
- 클래스 : 객체의 속성과 기능을 코드로 구현한 것을 말한다.
- 멤버변수 : 클래스의 속성들을 말한다.
ex) 학생 클래스에 멤버변수가 학번, 학생이름, 학년이 들어있는 경우
변수(Variable)
- 기본 자료형 : int, long, float
- 참조 자료형 : String, Student, Book (JDK 제공 or 다른 클래스)
- 이름 짓기 규약
- 클래스 : 대문자로 시작한다 ex) Student, Book
- 메서드, 변수 : 소문자로 시작하고, 의미있는 단어 사용시 대문자로 시작한다. ex) setStudentName, studentName
메서드(Method)
- 클래스와 관련된 기능을 구현한다. ( c 언어 ex) 두개의 값의 합을 출력하는 메서드
ex) 두개의 값의 합을 출력하는 메서드
1 2 3 4 5 6 | public int add(int num1,int num2) // 반환형 함수이름(매개 변수) { int result = num1+num2; return result } | cs |
인스턴스(Instance)
- 클래스가 메모리 공간에 생성된 상태를 인스턴스라고 한다.
- 스택영역의 참조변수 student1는 힙 영역의 student1의 인스턴스의 주소를 가진다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public clsss Student{ public static int studentNumber=1000; String studentName; int grade } public class Test{ public static void main(String[] args){ Student student1 = new Student() student1.studentName="kim"; Student student2 = new Student() student1.studentName="Lee"; Student student2 = new Student() student1.studentName="Park"; } } | cs |
패키지(Package)
- 비슷한 일을 하는 클래스 파일들의 묶음을 말한다.
- 프로젝트 전체 소스 코드를 구성하는 계층 구조이다.
- 클래스의 이름이 중복되는 경우가 있더라도 패키지 경로가 다르면 문제가 발생하지 않는다.
생성자(Constucter)
- 디폴트 생성자 : 자바 컴파일러가 자동으로 만들어주는 기본 생성자
- 생성자 오버로드 : 클래스에서 생성자가 2개이상 제공되는 경우를 말한다.
(자바에서 오버로드란? 메서드의 이름이 같고 매개변수만 다른 경우를 말한다.)
1 2 3 4 5 6 7 8 9 | public Student(){ // 디폴트 생성자 } public Student(int studentNumber){ // 생성자 오버로드 this.studentNumber = studentNumber; } public Student(int studentNumber, String studentName){ // 생성자 오버로드 this.studentNumber = studentNumber; this.studentName = studentName; } | cs |
접근 제어자(Access Modifier)
- 클래스 내부의 변수, 메서드, 생성자에 대한 접근 권한을 지정한다.
- public : 외부 클래스 어디에서나 접근 가능
- protected : 상속 관계의 클래스에서만 접근 가능
- private : 같은 클래스 내부에서만 접근가능
this 예약어
- 자신의 메모리를 가르키는(생성된 인스턴스를 가르키는) 예약어
ex) 생성자에서 다른 생성자를 호출하는 this
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public clsss Person{ String name; int age; person(){ this.name="이름없음"; this.age=1; // 위의 두 줄 this("이름 없음",1)로 바꿀 수 있다. // this를 이용하여 생성자에서 다른 생성자를 호출할 수 있다. } person(String name, int age){ this.name=name; this.age=age; } } | cs |
static 변수(정적변수, 클래스변수)
- 클래스에서 공용으로 사용하는 변수
ex) 학생을 추가할 때마다 학번을 1씩 증가시켜 학번을 생성하고자 할때 모든 인스턴스에게 동일하게 사용되는 하나의 변수
학생 kim, lee를 생성하고 studentNumber를 2증가시키고, 두 student1, student2의 studentNumber을 출력하면 1002이 각각 나온다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public clsss Student{ public static int studentNumber=1000; String studentName; int grade } public class Test{ public static void main(String[] args){ student kim = new Student(); student lee = new Student(); kim.studentNumber++; // Student.studentNumber++;과 동일 Student.studentNumber++; } } | cs |
클래스 메서드(Class Method)
- static 변수를 위한 메서드
- 클래스 메서드 안에서는 인스턴스 변수 사용 불가능하다.
1 2 3 4 5 6 7 8 9 | public clsss Student{ public static int studentNumber; String studentName; public static int setStudentNumber(){ this.studentName= "이루방"; -> 오류 Student.serialNumber=50; } } | cs |
변수의 유효범위와 메모리 영역
- 지역변수(로컬 변수) : 메서드 내부에서 선언, 함수가 호출될 때 스택(stack)에 생성, 함수 호출&반환 시 생성&소멸한다.
- 멤버변수(인스턴스 변수) : 클래스 어느 메서드에서나 사용가능, 클래스가 생성될 때 힙(heap)에 생성, 가비지 컬렉터가 수거하면서 사라진다.
- static변수(정적 변수, 클래스 변수) : 프로그램 실행시 데이터 영역에 생성, 프로그램 실행&종료 시 생성&소멸 한다.
싱글톤 패턴(Singleton Pattern)
- 단 하나의 인스턴스가 필요한 디자인 패턴을 말한다.
- static을 응용하여 프로그램 전반에서 사용하는 단 하나의 인스턴스를 구현한다.
ex) 대한민국에 사는 사람들을 관리하는 프로그램에서 나라 객체는 단 하나 대한민국만 필요하다.
'휴지통 > IT 스크랩' 카테고리의 다른 글
[JAVA] #1 자바의 장점 (0) | 2019.03.23 |
---|---|
[용어 정리] #2 제로페이, 디지털 디톡스, 디지털 트윈, 데이터&힙&스택 영역, 스타디아(클라우드 게이밍) (0) | 2019.03.23 |
[용어 정리] #1 블록체인, ICO와 IEO, 유니콘과 데프콘 기업, 기술적 특이점(싱귤래리티), 스푸핑&스누핑&스니핑 (0) | 2019.03.23 |
패러렐즈(Parallels) 싸게 구입하는 방법 (0) | 2018.07.16 |
아이폰, 삼성, LG 많은 회사들이 주목하는 '노치 디자인'이란? (0) | 2018.06.19 |