Java07 Class(클래스)

13775 단어 JavaJava

JAVA란?

: compiler로 기계어(ex. class파일)로 바꿔주는 언어다.

Object Oriented Programming (객체 지향 프로그래밍): 기능별로 분리하자

Java의 모든 Class 는 Object 를 상속한다.

객체 지향의 핵심은 연관되어 있는 변수와 메소드를 하나의 그룹으로 묶어서 그룹핑하는 것이다.

즉 기능별로 객체를 나누자는 것 .

Class 설계도 : 객체를 생성하기위한 설계도
Object(객체) 제품  : 실제로 존재하는 것 . 사물 또는 개념.
Instance : 의미상으로 객체와 비슷함. 객체는 인스턴스를 포함하고 있다. 우리가 java에서 부르는 객체는 instance이다.

클래스로부터 만들어진 객체를 그 클래스의 인스턴스(객체) 라고 한다.

Ex. Calculator c1 = new Calculator();

Class calculator 를 구체적인 제품으로 만드는 (객체화하는) 명령은 new Calculator();

public class Calculator{
public static void main(String[] args){
Calculator c1 = new Calculator(); // Calculator 객체를 c1에 넣어준것 c1은 인스턴스가 됨
   타입    변수        객체
}
}

자바의 4가지 특징

  1. 추상화

  2. 다형성

  3. 상속

  4. 캡슐화

  5. 추상화 (Abstraction)

공통 개념들을 추상적인 큰개념으로 다루는 것.

사물들의 공통된 특징, 즉 추상적 특징을 파악해 인식의 대상으로 삼는 행위를 말한다. >> 단순화

(ex) 예시

푸들 말티즈 비숑 리트리버 >> "강아지"

아우디 벤츠 볼보 >> "자동차"

  1. 다형성 (Porymorphism)

같은 형태이지만 다른 행위 상속을 전제로 한다.

서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 것이다.

Animal animal = new Dog(); // 부모타입에 자식 객체 dog 생성
		animal.bark(); >> 멍멍
		
		animal= new Cat(); // cat 객체도 생성 
		animal.bark(); >> 야옹 

멍멍과 야옹이라는 행위를 달리함 

-Overloading 오버로딩

같은 이름의 메소드를 여러개 가지면서 다른 기능을 하는 것 (파라미터의 타입 이나 갯수가 다르다)

sum이라는 같은 이름의 메소드로 파라미터의 수가 다른 것
public int sum(int i) { // 파라미터 하나
		return i+i;
	}

	public int sum(int i , int j ) { //파라미터 두개
		return i+j;
	}
	
	public int sum(int i, int j, int k) { //파라미터 세개 
		return i +j+ k ; 
		
	}
//같은이름의 메소드로 타입을 달리한 방법	
	public double sum(double d, double f ) { //더블타입 
		return d +f;
	}
	
	public int sum(double d1, double d2, double d3) {
		return (int)(d1+d2+d3);
	}
  1. 상속(Inheritance)

부모 객체의 것을 자식 객체가 사용하는 것 (코드의 재사용성)

→ 부모에게 상속받은 공통적인 것을 자신에 맞게 확장시키는 것은 Override

override : 재정의

ex. 아이패드를 가지고 부모님은 유튜브만 본다.

 나는 부모님의 아이패드로 공부하기, 유튜브 보기, 영화보기 등등을 한다. 
  1. 캡슐화(Encapsulation) : 기능만 사용하는 것 (코드은닉)

    → 우리가 아이폰을 사용할때, 누가 어떤 재료로 만들었는지 알 필요가 없다.

Class의 구조를 보자.

class Car{
1. field: 속성. "값" 

-class 변수 : static , 해당 타입 전체에 적용되는 것
static boolean engine = true; 엔진은 모든 차에 적용된다. 

-instance 변수 : nonstatic, 해당 객체에 따라 다르게 적용되는 것 
private String color; 색상은 각각의 차에따라 다르게 적용된다. 
private int speed; 속도 역시 각각의 차에따라 다르게 적용된다. 

- 필드는 변수와 비슷하게 생겼지만, 변수가 아니다.
- 생성자와 메소드 바디(블록) 안에서 선언된 건, 그 안에서만 쓸 수 있는 지역변수(local)
- 생성자와 메소드 밖에서 선언된 필드는 그 클래스 모두에서 사용할 수 있는 전역변수이다.
- 초기값이 지정되지 않으면 자동으로 기본 초기값으로 보여준다.

2. constructor: 생성자, 메모리영역과 리턴타입을 쓰지 않는다.
- new연산자와 같이 사용되는 즉 인스턴스이며, 뒤에는 특별한 중괄호{}블록이 붙는다.
- 객체를 생성하고 필드 초기화를 한다.
- overlode 할 수 있다. 
- 메소드와 비슷하게 생겼지만, 클래스 이름으로 되어 있으며 리턴타입이 없다.
- 모든 클래스는 반드시 생성자가 존재해야 한다. 하나 이상을 가질 수도 있다.

public Car() { //기본 생성자 
}
public Car(String color){ // 파라미터 1개를 가진 생성자 
  this.color=color; //파라미터를 통해 들어오는 값을 필드에 저장해준다. 
}
public Car(String color, int speed){
 this.color= color;
 this.speed = speed;//파라미터를 통해 들어오는 값을 필드에 저장해준다.
}
-this로 여러 생성자들을 호출 할 수 있다. 

3. method : 기능을 나타낸다. ~하는것 "명령문들의 집합"
-overlode 할 수 있다.  
getter & setter 
public String getColor(){ //set으로 들어온 값을 읽는방법 
 return color;
}
public void setColor(String color){ //변수에 값을 넣는 방법
 this.color=color;
}
  • 컴파일 시, 바이트코드 파일은(.class) 클래스를 선언한 개수만큼 생긴다.
  • 파일 이름과 동일한 이름의 클래스 선언에만 public 접근제한자를 붙일 수 있다.
  • 클래스가 100개 라면 99개는 라이브러리이고, 나머지 1개가 main인 실행용이다.

좋은 웹페이지 즐겨찾기