개발공부 2023 ~03~13

객체지향 (클래스와 객체)

주우동 2023. 3. 23. 22:26

객체지향 파트부터 수업을 들으며 이해가 가지 않는 부분이 생겨서  자바의 정석책을 통해 좀 더 지식을 습득하고 그동안 배운 내용을 마저 정리 하려고 한다! 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

객체지향은 자바의 꽃!.. 일단 외우는게 중요하고 짧게 나만의 핵심을 정리해서 매일 봐줘야한다.


객체지향 (클래스와 객체)


클래스의 정의 클래스란 객체를 정의한것
클래스의 용도 클래스는 객체를 생성하는데 사용

 

클래스

public class Hello2 {
		class Hello3{}//클래스는 하나의 소스파일에 public 클래스가 하나만 존재할수 있다.
		//public 클래스의 이름은 소스파일 이름과 일치 해야한다.
		//public이 아닌 클래스는 더 추가가능하다.
	public static void main(String[] args) {

	}


객체의 정의 실제로 존재하는 것 사물또는 개념
객체의 용도 객체가 가지고 있는 기능과 속성에 따라 다름
클래스는 설계도 -> 객체는 사물
필요한 기능을 구현하기 위해 클래스를 통해 설계를 한후 객체를 통해 기능을 사용한다.
tv설계도-> tv
객체(인스턴스)의 구성요소
속성 : 변수 
String color;
boolean power;
기능 : 메서드 
void power(){
}
void chanelUp(){
}

객체의 생성 
변수명 참조변수 = new 변수명() 
 ->Tv t = new Tv();
객체의 사용 
항상 객체의 참조변수(리모콘)을 통해사용
t.channel = 7; 
t.channelDowm();

Tv 클래스

package javajungsuck;

public class TvApp {

	public static void main(String[] args) {
		Tv tv = new Tv();
		Tv tv1 = new Tv();
		tv.channelDown();
		System.out.println("현재 채널은"+tv.channel+"번 입니다");
		//전원 상태변경 확인
		System.out.println(tv.power);
		tv.powerUpDown();
		System.out.println(tv.power);
		//같은 주소값을 가리키게 해보기
		tv1.channel=3;
		System.out.println(tv1.channel); //3 
		tv1 = tv; //tv1의 주소값이 tv와 같은 주소값을 가리키게 함
		System.out.println(tv1.channel); //6
	}

}
 //이게 되네 ? 이런방식은 처음해본다 한 클래스안에 2개의 클래스정의 !!
	 class Tv {
			int channel = 7;
			boolean power = false;
			//채널내리기
			void channelDown() {
				channel-=1;
			}
			//전원상태 바꾸기
			void powerUpDown() {
				power=!power;
			}
}

 

객체배열



변수명  [ ] 참조변수 = new 변수명[갯수];
참조변수 배열이라고 불리운다.
배열을 만든후 객체를 채워넣어줘야한다.

public class ClassArray {

	public static void main(String[] args) {
		//객체 배열 생성
		Tv[] t = new Tv[4];
		//객체배열 생성후 채워넣어줘야한다 
		t[0] = new Tv();
		t[1] = new Tv();
		t[2] = new Tv();
		t[3] = new Tv();
	}

}



클래스안의 영역 


클래스 영역과 메서드 영역 2가지로 나뉘고 변수의 종류는 3가지 인스턴스 변수,클래스 변수, 지역변수

package javajungsuck;

public class C1 {
	//클래스 영역  
	//변수,메서드 선언 순서는 상관없다
	int y; //iv 객체변수 인스턴스가 생성되었을때 만들어진다. 객체생성을 해야지 쓸수 있다.
	static int x; //cv 클래스변수  클래스가 메모리에 올라갈때 생성된다. 쉽게 생각하면 아무때나 사용가능

	public static void main(String[] args) {
		//메서드 영역
		int a; //Lv 지역변수 변수선언문이 실행 되었을때 실행된다. 메소드 끝나면 자동으로 제거된다.
	}

}