1. Introduction to Class
class
- 프로그래머가 정의하는 특별한 타입
- 변수가 클래스 타입으로 선언될 수 있다.
- 클래스는 해당 타입의 객체가 가지고 있는 데이터와 수행할 함수를 결정한다.
- 클래스 타입의 값 = object (객체), instance (인스턴스)
- example
class Ball:
fields : color, size, shape
methods : set_ball_color(), set_ball_size(), set_ball_shape()
// instances of the class Ball : football, tennis ball, rugby ball etc...
methods 들은 fields의 데이터 값들을 변경하는 역할을 한다.
클래스는 데이터 값을 변경하여 다양한 인스턴스 (클래스 객체)를 만들 수 있다.
클래스로 데이터와 메소드들을 묶어주면 재사용이 쉽다.
2. Primitive Type Values vs. Class Type Values
primitive type values
- int, float, char, ... 일반적인 데이터 타입
- 하나의 데이터 타입을 나타냄
class type values
- 여러 개의 데이터 타입을 가진다.
- 메소드 (액션)을 여러개 가진다.
- 하나의 클래스의 모든 객체들은 같은 데이터와 메소드를 갖는다.
- 각 객체들은 서로 다른 값을 갖는 데이터를 가질 수 있다.
example
public class Ball {
String color;
float size;
String shape;
// 모든 Ball 객체는 위 변수 3개를 갖는다. (값을 달라도 됨)
void Set_Ball_Color(String BallColor) {
color = BallColor;
}
void Set_Ball_Size(float BallSize) {
size = BallSize;
}
vois Set_Ball_Shape(String BallShape) {
shape = BallShape;
}
}
public class Program {
public static void main(String[] args) {
Ball football = new Ball(); // 초기화
// bad way to use class objects
football.color="blue";
football.shape="circle";
football.size=15.2f;
// good way to use class objects
football.Set_Ball_Color("black");
football.Set_Ball_Shape("rectangle");
Ball tennisball = new Ball();
tennisball.color="yellow";
tennisball.shape="circle";
tennisball.size=9.12f;
}
}
Contents of a class definition
- fields, 인스턴스 변수
- methods
- members = fields + methods
// 클래스 타입 선언
ClassName classVar;
// 클래스 객체 생성
classVar = new ClassName();
// ex)
Ball football;
football = new Ball();
// 한번에 선언 및 객체 생성 가능
ClassName classVar = new ClassName();
//ex)
Ball football = new Ball();
3. Instance Variables and Methods
- 인스턴스 변수가 public (default)면 외부 객체에서 직접 변경 가능
- private이라면 외부 객체에서 변경 불가능
4. Class Constructor
- 객체의 인스턴스 변수를 초기화하기 위해 설계된 특별한 메소드 = constructor
public ClassName (params) { ... }
- 클래스와 같은 이름을 가지고 있어야 함
- 리턴 타입이 없음 (not even void)
- 반드시 public
- 메소드 오버로딩됨
- 없으면 자바 컴파일러가 자동으로 constructor 만들어서 객체 변수 초기화 수행
- 하나의 클래스에 여러개의 구성자 함수 만들 수 있음
public class Ball {
String color;
float size;
String shape;
// 모든 Ball 객체는 위 변수 3개를 갖는다. (값을 달라도 됨)
//constructor
public Ball() {
color = "white";
size = 0;
shape = "None";
}
void Set_Ball_Color(String BallColor) {
color = BallColor;
}
void Set_Ball_Size(float BallSize) {
size = BallSize;
}
vois Set_Ball_Shape(String BallShape) {
shape = BallShape;
}
}
public class Program {
public static void main(String[] args) {
Ball football = new Ball();
System.out.println(football.color);
// white
}
}
or
public class Ball {
String color;
float size;
String shape;
//constructor
public Ball(String c, float s, String sh) {
color = c;
size = s;
shape = sh;
}
void Set_Ball_Color(String BallColor) {
color = BallColor;
}
void Set_Ball_Size(float BallSize) {
size = BallSize;
}
vois Set_Ball_Shape(String BallShape) {
shape = BallShape;
}
}
public class Program {
public static void main(String[] args) {
Ball football = new Ball("Black", 10.5f, "circle");
System.out.println(football.color);
// Black
}
}
5. Full Java Example
6. Common Class differences between C++ and Java
class
- 변수
- 메소드
- => 인스턴스화
Java | C++ |
선언과 동시에 인스턴스 변수 초기화 | 반드시 constructor를 활용해서 초기화 가능 |
직접 할당 X | |
클래스 선언 끝에 ; 불필요 | 클래스 선언 끝에 ; 필요 |
클래스 객체 선언 heap 방식 | heap 방식, stack 방식 |
디폴트가 public | 디폴트가 private |
포인터 X | 포인터 O |
final : 클래스 데이터 일부만 바꾸기 가능, 전체 변경 X |
References
- 성균관대학교 소프트웨어학과 타메르 교수님 <자바 프로그래밍 실습> 수업
- 2021.03.09
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java programming 자바 프로그래밍 실습 : 시험 시스템 (0) | 2021.03.11 |
---|---|
Java programming 자바 프로그래밍 실습 : 급여 계산기 (0) | 2021.03.11 |
Java programming 자바 프로그래밍 실습 : 원기둥 부피 구하기 (0) | 2021.03.11 |
Week2) Java Programming Lab: Java vs. C++ (0) | 2021.03.01 |
Week 1) Java Programming Lab: Course Introduction (0) | 2021.02.23 |