자료구조 06 - 클래스
*클래스 *
우선 클래스의 특징에 대해서 알아보려고 한다.
1. 캡슐화 -> 외부에서 클래스 내부를 바라보는것을 단절시켜준다. ( private ,public, protected)
2. 상속성 -> 상위클래스아래에 하위클래스가 있는 구조를 생각할 수 있다.
3. 다형성 -> 상속성과 연결지을 수 있는 특성으로 똑같은것을 여러방법으로 구현하고 상황에 따라 적당한 구현을 할수있다 라고 생각하면
될 것같다.
4.final로 선언한 클래스 변수는 한번만 값 대입가능
5 생성자로 객체생성시 인스턴스 변수의 초기화가 가능하다.
자바는 Object-Oriented Programming으로 객체지향 프로그램이다.
모든데이터를 객체로 취급하고 객체의 상태 및 행동을 다루는 프로그래밍 언어이다.
클래스는 설계도라고 생각하면 좋다
아래의 작성된 코드를 통해서 용어를 정리해 보겠다.
class animal{
String name; ==> 인스턴스 변수
String type;
double weight;
public animal(String name,String type, double weight){ ==> 생성자
this.name = name;
this.type = type;
this.weight = weight;****
}
public void changename(String name){ ==> 인스턴스 메소드
this. name = name;
}
public static void main(String[] args){
animal[] data = { ===> 배열로 된 인스턴스
new animal("우주" ,"푸들",3.7),
new animal("뽀미" ,"포메",5.8),
new animal("마루" ,"푸들",7.6),
new animal("우유" ,"말티즈",2.8),
};
System.out.println("동물목록");
System.out.println("이름** 종류** 몸무게");
for(animal i : data){ ==> 데이터라는 배열에 있는 a[0], a[1]부터 차례대로 전부 꺼내옴
System.out.println(i.name + " "+i.type+" "+i.weight_;
}
}
}
클래스명 Animal
생성자 : 반환값이 없으며 클래스명과 동일하다.(void도 사용하지 않음), 객체생성시 인스턴스 변수가 초기화된다.
메소드 : 클래스 내에 구현된 함수로 객체.메소드로도 사용을 할 수있다 ( A.changename() 으로 ()가 붙는다)
객체 변수: 필드라고 불리며 객체가 사용하는 변수를 뜻함 ( A.name 으로 쓰일수 있으며 ()가 붙지 않음)
인스턴스: 클래스형으로 생성된 객체를 뜻함
클래스 변수와 객체변수
클래스 변수는 모든 객체가 공유하는 변수로 클래스 내에서 선언할수 있으며 (프로그램 실행시작~끝까지 유지)
객체변수는 인스턴스에 속해있는 변수로써 공유되지 않으며 다른객체의 변수와 독립적이다.(객체 생성 ~ 객체가 소멸될때까지 유지)
Public class - 다른패키지에서 사용가능한 클래스
final class - 접근 제한자인 final을 붙인 클래스로 서브클래스를 가질 수 없음
extends class - 이것은 예시로 설명하려고한다
예를들어 class A extends B라고 있다면 A의 하위클래스는 B이고 B의 상위클래스는 A라는 것이다.