본문 바로가기

Java/java 기초

객체지향 프로그래밍 기본 개념

public class mainClass {
	public static void main(String[] args) {
		/*
   
		 * 1. 은닉성(==캡슐화)
		 * :외부와의 차단으로 변수들을 관리할 수 있다.
		 * 클래스 내부에서만 접근(처리)이 가능하도록 접근 지정자로 제어한다.
		 * 
		 *  private(개인적인) -> 멤버변수
		 *  public(대중적인) -> 멤버 메소드
		 *  protected(특정) - 상속관련
		 * 
		 * Object Oriented Programming 객체 지향 프로그래밍 
		 * 	Aspect(관점) Oriented Programming
		 * 
		 * 처리 중심.
		 * 설계 중요
		 * 
		 * != 절차지향 -> 순차적 처리 (속도)
		 * 
		 * 1. 은닉성(캡슐화)
		 * 2. 상속성
		 * 3. 다형성
		 * 
		 * class 설계 
		 * 
		 * class 클래스 명 {
		 * 		-- 변수부
		 * 		접근 지정자 변수자료형 변수명; member 변수
		 * 
		 * 		-- 메소드부
		 * 		접근 지정자 자료형 메소드명(매개변수){
		 * 
		 * 		}
		 * }
		 * 
		 * 변수(객체)를 선언 후에 동적 할당을 해야 접근 할 수있다.
		 *  
		 * class 변수 -> object(객체), instance(주체)
		 * 							실제 메모리 영역에 올라가는 변수
		 * 
		 * 클래스 명 인스턴스 = new 클래스 명();
		 * 
		 * 인스턴스 -> 실제영역 
		 * stack	 heap
		 */
		
		MyClass cls; // cls == instance;
		
		cls = new MyClass(); // heap cls:stack
		
		cls.c = 'A';
		cls.x = 12;
		cls.func();
		cls.method(33);
		
		// 절차 지향일 경우
		// TV(안방, 홀, 내방)
		String name[] = new String[3];
		int channel[] = new int[3];
		boolean power[] = new boolean[3];
		
		TvClass tv1, tv2, tv3;
		
		tv1 = new TvClass();
		tv2 = new TvClass();
		tv3 = new TvClass();
		
		//위와 같다
		TvClass arrTv[] = new TvClass[3];
		
		for (int i = 0; i < arrTv.length; i++) {
			arrTv[i] = new TvClass();
		}
		
		//생성해줘야 한다
//		arrTv[0] = new TvClass();
//		
//		arrTv[0].setChannel(11);
		
		tv1.setName("LG");
		tv2.setName("Samsung");
		tv3.setName("Daewoo");
		
		tv1.setPower(true);
		tv2.setPower(false);
		tv3.setPower(true);
	}
}


class MyClass{
	// 변수부(MyClass의 멤버)
	int x, y;
	char c;
	String str;
	
//	function 안에만 있어야한다.
//	str = "hh";
	// 메소드부
	void func() {
		x = 0;
		System.out.println("MyClass func()");
	}
	void method(int i) {
		str = "hello";
		x = i;
		System.out.println("MyClass method(int i)");
		System.out.println("x = " + x);
	}
	
}

'Java > java 기초' 카테고리의 다른 글

final  (0) 2019.11.28
객체 오버라이딩 및 상속을 통한 구현  (0) 2019.11.28
파일 쓰기  (0) 2019.11.26
파일 읽기  (0) 2019.11.26
파일 생성  (0) 2019.11.26