[day07]

변수
연산자 화폐매수 구하기

if 짝수 홀수
for 구구단 전체 ~별찍기 10번
배열 1차원 치대값, 최소값, 정렬, 2차원 아파트 6번



1. 객체 지향 
# 객체지향
# 특징
코드 재사용성이 높다 : API 사용
코드 관리가 쉽다 : 상속, 다향성, 추상화. 캡슐화
신뢰성이 높은 프로그램 개발 가능

# 캡슐화 (encapsulation) : 자바가 지향하는 코드 스타일
# 상속 (inheritance)
# 다형성 (polymorphism)
상속관계에서 성립
같은 이름의 기능이 클래스나 객체에 따라 
다르게 동작하도록 구현되는 것.

2. 클래스와 객체

1) 클래스 (설계도)
객체를 정의해 놓은 것
용도는 객체를 만들기 위한 것

2) 객체
실제로 존재하는 것
클래스 모양 (설계) 그대로 생성된 실체

3) 객체와 인스턴스 
객체 == 인스턴스 

4) 객체 : 속성 + 기능
속성과 기능을 통틀어 맴버라고 부른다.
속성 : 맴버변수, 필드
기능 : 매서드 

5) 객체를 생성과 사용

#1. 클래스 정의
* 클래스 구조 *
class 클래스명 {
변수
메서드
}

# 클래스명은 첫글자 대문자, 숫자로 시작 X, 띄어쓰기 X, 특수기호 _ $ 만 허용
   패키지내 클래스명은 한개만 존재해야함.


#2. 객체 생성
**선언**
클래명 참조변수명;        String str

**생성**
참조변수명 = new 클래스 명 ()

**선언 + 생성 **
클래스명 참조 변수명 = new 클래스명 ();
Scanner sc = new Scanner();

참조 변수 (레퍼런스 변수) : 객체를 가르키는, 객제츠이 주소 (레퍼런스)
new : 클래스 모양의 메모리를 점유하는 문법적으로 중요한 키워드


#3. 객체 사용

참조변수명.변수 = 값;
참조변수명.메서드();


 ---> 정리
클래스 == 사용자 정의 데이터 타입
기본형 : 메모리 양이 정해진것
클래스 : 개발자가 필요한 만큼 메모리 크기를 직접 지정해서 만든것.
클래스 : 유사한 특징을 지닌 객체들의 속성과 기능을 묶어 놓은 집함


3. 변수의 종류
: 선언 위치(어디서 변수가 만들어졌느냐)에 따라 변수의 종류와 성질이 달라짐.

1) 클래스 변수  (static 변수)
- 클래스 안에 생성 (메서드 밖)
- 이름앞에 static 키워드가 붙는다

- 종류 : 클래스 기본형 변수(int string) / 클래스 참조형 변수(tv.. /
- 특징 : 모든 객체들이 공유하는 변수
 프로그램시작하면 먼저 한번만 로딩하고,
 new로 객체생성하지 않아도 바로 사용가능.
- 접근방법 
클래스명.변수명
참조변수명.변수명

2) 인스턴스 변수 
- 클래스 안 생성 (메서드 밖)
- 종류 : 인스턴스 기본형 변수 / 인스턴스 참조형 변수 
- 특징 : 각 객체(인스턴스)의 개별적인 저장 공간 갖는다.
new~ 로 객체생성한 후 메모리가 점유되면 사용가능.
가르키는 참조변수가 없을 경우 가비지 컬렉터가 수거해감.
또는 프로그램 종료시 소멸됨.
- 접근 방법
참조변수명. 변수명

3) 지역 변수   
- 메서드 안 생성
- 종류 : 지역 기본형(int, char 소문자) 변수 / 지역 참조형(Scanner, String 대문자) 변수
- 특징 : 메서드 (,조건문 , 반목문) 내에서 선언된 변수를 가르키며,
메서드 종료시 소멸

# 메모리 로딩순서
클래스 영역-> static -> main 실행 -> (new~~) 인스턴스 생성 
:클래스 범위 만들고
| static 붙은 아이들 모두 로딩
|메인 있다면 실행
| new로 객체 생성된 아이들 실행

 

 

 

package day07;    //패키지명
// #1. 클래스 정의
class Person{
	// 속성 (변수)
	String name = "홍길동" ;
	int age = 10;
	
	// 기능 (메서드)
	void breathe() {
		System.out.println("숨쉬기");
	}
	
	void sleep() {
		System.out.println("잔다");
	}
	
}
public class Test60 { 

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// #2. 객체 생성
			Person p = new Person();
			p.name = "피카츄";
			p.age = 100;
			System.out.println(p);
			System.out.println(p.name);
			System.out.println(p.age);
			p.breathe(); //기능 실행해
			p.sleep(); 
			
			
			Person p2 = new Person();
			System.out.println(p2);
			System.out.println(p2.name);
			System.out.println(p2.age);
			p2.breathe();	
	}
}

 

 

package day07;

class Tv {
	boolean power = false;
	int vol = 0, ch =1;
	
	
}
public class Test61 {

	public static void main(String[] args) {
		
		
		Tv t1 = new Tv();
		Tv t2 = new Tv();
		t1.ch = 100;
		System.out.println(t1.ch);
		System.out.println(t2.ch);
		
		t1= t2;   //주소값이 같아져서 밑에 값 같아짐
		t1.ch= 500;
		t2.ch= 200;
		System.out.println(t1.ch);
		System.out.println(t2.ch);
		

/*		
		// TODO Auto-generated method stub
		// 변수    (속성)
		// 메서드  (기능)
		// 메인 메서드
		
		//Test61 test = new Test61();
		String s = new String();
		
		Tv t = new Tv();
		System.out.println(t.power);
		System.out.println(t.vol);
		System.out.println(t.ch);
		
		Tv t1 = new Tv ();		
		Tv t2 = new Tv ();		
		Tv t3 = new Tv ();		
		
		t1.ch = 10;
		t2.ch = 20;
		System.out.println(t1);
		System.out.println(t2.ch);
		System.out.println(t3.ch);
		
		
		
		// 같은 타입끼리 대입가능
		int a = 10;
		int b = 20;
		a = b; 
		b = a;
		
		t1 =t2;
		t1.ch = t1.vol;
		
		// 다른타입끼리는 불가능
		//t1 = t2.ch; 
	*/
	}
}

 

 

package day07;


class TvEx {
// 클래스 기본형 변수
	static boolean power = false;
// 인스턴스 기본형 변수
	int vol = 0, ch = 1;
}
public class Test62 {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 지역 기본형 변수 
		int a = 10;
		
		// 지역 참조형 변수 }중 괄화 안에서만 유효함
		String str = "hello";
		
		// 지역 기본형 변수 : for 문이 끝나면 사라짐
		for(int i= 0; i<5; i++) {
			System.out.println(i);
		}
		// 클래스 변수 출력 : 객체 생성없이 바로 사용가능
		System.out.println(TvEx.power);
		// 인스턴스 변수 출력 : 객체 생성해야 사용가능!!!!!!
		TvEx t1 = new TvEx();
		System.out.println(t1.vol);
		System.out.println(t1.ch);
		System.out.println("------------------");
		TvEx tv1 = new TvEx();
		TvEx tv2 = new TvEx();
		tv1.ch=200;
		System.out.println(tv1.power+"   " + tv1.ch);
		System.out.println(tv2.power+"   " + tv2.ch);
	}
}

'P-Language > [Java]' 카테고리의 다른 글

[Java] 9 - 오버로딩, 생성자와 기본 생성자  (0) 2022.06.03
[Java] 8 - 메서드  (0) 2022.06.03
[Java] 6 - 다차원 배열  (0) 2022.06.03
[Java] 5 - 배열  (0) 2022.06.03
[Java] 4 - 조건문(switch), 반복문  (0) 2022.06.03

+ Recent posts