일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 화이자1일차
- 화이자접종후기
- 스터디
- 자바토글버튼
- 백준구구단
- 자바수업
- 백준10171
- 자바이벤트
- 백준고양이자바
- java
- 백준2739
- 코로나백신
- cs지식
- 자바공부
- 자바
- 포장방스터디
- 2739자바
- 자바조건문
- 자바컴포넌트
- GUI
- 백준고양이
- 자바화면구현
- 백준자바 #백준10718
- 백준10718자바
- 화이자백신후기
- 컴퓨터공부
- 백준 #백준알고리즘 #백준 Hello World #Hello World
- 화이자미열
- 1일1로그
- 자바컨테이너
- Today
- Total
Salted Caramel
[수업 8일차] 21.08.11, 객체(Object), 클래스(Class) 본문
[수업 8일차] 21.08.11, 객체(Object), 클래스(Class)
꽃무늬라떼 2021. 8. 11. 17:28* 객체(Object)?
* - 실세계에서 우리 주변에 있는 모든 것이 객체임.
* 예) Tv, 컴퓨터, 책, 건물, 의자, 사람 등등 //(객체에 가장 대표적인것은 사람)
* - 실세계의 객체들은 자신만의 고유한 특성(속성)과 행동(기능)을 가지고 있음.
* - 이러한 객체들은 다른 객체들에게 행동을 요청하거나 정보를 주고 받는 등
* 상호 작용을 하면서 존재함.
* 예를 든다면 사람은 전자계산기의 기능을 이용하게 되고, 전자계산기는
* 계산 결과를 사람에게 알려주는 상호 작용을 하게 됨.
* - 아러한 객체는 속성과 동작(기능)으로 구성이 되어 있음.
* 예를 든다면 사람은 이름, 나이 등의 속성이 있고, 걷다, 쓰다, 달린다 등의 동작이 있음.
* 또한 자동차의 경우에는 색상, 모델명 등이 속성에 해당이 되고, 달린다, 멈춘다 등의
* 동작이 있음.
* - 객체는 개별적으로 사용이 될수도 있지만, 대부분 다른 객체와 관계를 맺고 있게 됨.
* 이러한 관계의 종류에는 집합관계, 사용관계, 상속관계가 있음, ==> 중요함.
* - 집합관계는 객체는 하나의 부품이고, 하나의 완성품에 해당이 됨.
* 예를 든다면 자동차는 엔진, 타이어, 핸들 등으로 구성되므로 이 부품들을
* 집합관계로 볼 수 있음.
* - 사용관계는 객체 간의 상호작용을 말함. 다른 객체의 메서드를 호출하여 원하는 결과를
* 얻어내는 것을 말함. 예를 든다면 사람은 자동차를 사용하므로 사람과 자동차는 사용의
* 관계라고 볼 수 있음. 사람은 자동차를 사용할 때 달린다, 멈춘다 등의 메서드를 호출함.
* - 상속관계는 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말함.
* 일반적으로 상위 객체는 종류를 의미하고, 하위객체는 구체적인 사물에 해당이 됨.
* 예를 든다면 "독수리는 새의 종류이다" 에서 새(상위)와 독수리(하위)는 상속관계에
* 있다고 볼 수 있음.
* - 객체지향 프로그래밍(OPP : Object Oriented Programming)은 만들고자
* 하는 완성품인 객체를 모델링하고, 집합관계에 있는 부품 객체와 사용관계에 있는 객체를
* 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 기법임.
*/
/*
* 클래스(Class)? //객체를 만들기 위한 도면이다, 설계도이다
* - 현실에서 객체는 갑자기 만들어지는 것이 아니라, 설계도를 바탕으로 만들어짐.
* 예를 들어 사람들이 자동차를 이용하기 위해서는 우선 공장에서 설계도를 보고 자동차를
* 만들어야함. 객체지향 프로그래밍에서도 마찬가지임. 메모리에서 사용하고 싶은 객체가
* 있다면 우선 설계도로 해당하는 객체를 만드는 작업이 필요함.
* 자바에서는 설계도가 바로 클래스(Class)임.
* - 클래스는 객체를 만들기 위한 설계도(틀, 도면)임.
* - 자바는 클래스 단위로 프로그래밍을 함.
* - 클래스를 구성하는 것을 멤버(member)라고 함.
* - 멤버 = 속성(멤버변수) + 기능(멤버메서드)
* ==> 속성 : 멤버변수 - 클래스의 특징 ==> 명사적 개념
* ==> 기능 : 멤버메서드 - 클래스의 행위(동작) ==> 동사적 개념
* - 클래스 구성 : 클래스 헤더, 멤버변수, 멤버메서드, 생성자
*
*
* [클래스 형식]
* [접근제한] class 클래스이름 {
* 멤버변수;
* 생성자();
* 멤버메서드();
* }
*
* -클래스 이름 : 대문자로 시작(식별자)
- 06_Class & Method-Class-Ex01_class
package Class;
/*
* 객체(Object)?
* - 실세계에서 우리 주변에 있는 모든 것이 객체임.
* 예) Tv, 컴퓨터, 책, 건물, 의자, 사람 등등 //(객체에 가장 대표적인것은 사람)
* - 실세계의 객체들은 자신만의 고유한 특성(속성)과 행동(기능)을 가지고 있음.
* - 이러한 객체들은 다른 객체들에게 행동을 요청하거나 정보를 주고 받는 등
* 상호 작용을 하면서 존재함.
* 예를 든다면 사람은 전자계산기의 기능을 이용하게 되고, 전자계산기는
* 계산 결과를 사람에게 알려주는 상호 작용을 하게 됨.
* - 아러한 객체는 속성과 동작(기능)으로 구성이 되어 있음.
* 예를 든다면 사람은 이름, 나이 등의 속성이 있고, 걷다, 쓰다, 달린다 등의 동작이 있음.
* 또한 자동차의 경우에는 색상, 모델명 등이 속성에 해당이 되고, 달린다, 멈춘다 등의
* 동작이 있음.
* - 객체는 개별적으로 사용이 될수도 있지만, 대부분 다른 객체와 관계를 맺고 있게 됨.
* 이러한 관계의 종류에는 집합관계, 사용관계, 상속관계가 있음, ==> 중요함.
* - 집합관계는 객체는 하나의 부품이고, 하나의 완성품에 해당이 됨.
* 예를 든다면 자동차는 엔진, 타이어, 핸들 등으로 구성되므로 이 부품들을
* 집합관계로 볼 수 있음.
* - 사용관계는 객체 간의 상호작용을 말함. 다른 객체의 메서드를 호출하여 원하는 결과를
* 얻어내는 것을 말함. 예를 든다면 사람은 자동차를 사용하므로 사람과 자동차는 사용의
* 관계라고 볼 수 있음. 사람은 자동차를 사용할 때 달린다, 멈춘다 등의 메서드를 호출함.
* - 상속관계는 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말함.
* 일반적으로 상위 객체는 종류를 의미하고, 하위객체는 구체적인 사물에 해당이 됨.
* 예를 든다면 "독수리는 새의 종류이다" 에서 새(상위)와 독수리(하위)는 상속관계에
* 있다고 볼 수 있음.
* - 객체지향 프로그래밍(OPP : Object Oriented Programming)은 만들고자
* 하는 완성품인 객체를 모델링하고, 집합관계에 있는 부품 객체와 사용관계에 있는 객체를
* 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 기법임.
*/
/*
* 클래스(Class)? //객체를 만들기 위한 도면이다, 설계도이다
* - 현실에서 객체는 갑자기 만들어지는 것이 아니라, 설계도를 바탕으로 만들어짐.
* 예를 들어 사람들이 자동차를 이용하기 위해서는 우선 공장에서 설계도를 보고 자동차를
* 만들어야함. 객체지향 프로그래밍에서도 마찬가지임. 메모리에서 사용하고 싶은 객체가
* 있다면 우선 설계도로 해당하는 객체를 만드는 작업이 필요함.
* 자바에서는 설계도가 바로 클래스(Class)임.
* - 클래스는 객체를 만들기 위한 설계도(틀, 도면)임.
* - 자바는 클래스 단위로 프로그래밍을 함.
* - 클래스를 구성하는 것을 멤버(member)라고 함.
* - 멤버 = 속성(멤버변수) + 기능(멤버메서드)
* ==> 속성 : 멤버변수 - 클래스의 특징 ==> 명사적 개념
* ==> 기능 : 멤버메서드 - 클래스의 행위(동작) ==> 동사적 개념
* - 클래스 구성 : 클래스 헤더, 멤버변수, 멤버메서드, 생성자
*
*
* [클래스 형식]
* [접근제한] class 클래스이름 {
* 멤버변수;
* 생성자();
* 멤버메서드();
* }
*
* -클래스 이름 : 대문자로 시작(식별자)
*/
public class Ex01_class { //(클래스 헤더)
//멤버변수는 초기값을 설정하지 않으면 JVM이
//객체 생성 시점에 해당 데이터 타입(자료형)에 맞게
// 알아서 해달 자료형의 default값릏 설정을 해 줌.
int num; // 멤버변수 - 전역변수 - 기본값 : 0 (변수의 색이 파란색으로 나오는 것이 특징)
String str; // 멤버변수 - 전역변수 - 기본값 : null
void display() { // 멤버메서드
int su = 10; // 지역변수
System.out.println("멤버변수(num) >>> " + num);
System.out.println("멤버변수(str) >>> " + str);
System.out.println("변수(지역변수) >>> " + su);
}
public static void main(String[] args) {
// 클래스를 대상으로 객체를 만드는 과정이 필요함.
// 1단계 : 클래스 선언
// 형식) 클래스이름 참조변수;
// * 참조변수 : heap 메모리 공간에 객체가 만들어지는데 //(배열이름과 동일)
// 만들어지는 객체의 주소값을 가지는 놈.
//Ex01_Class ex;
// 2단계 : 클래스를 메모리(heap)에 생성
// 형식) 참조변수 = new 클래스이름(); ==> 클래스이름(X), 생성자(O)
//ex = new Ex01_Class(); //(heap이라는 공간에 Ex01_Class()메모리 공간을 할당)
//(참조변수의 이름 ex(시작 주소값을 가비고 있음))
//1단꼐 + 2단계 : 클래스 선언 및 클래스 객체 생성
Ex01_class ex = new Ex01_class();
System.out.println("ex >>> " +ex);
// 3단계 : 참조변수를 이용하여 객체에 접근.
// 객체에 접근 시 .(도트) 연산자를 이용하여 접근.
ex.display();
System.out.println();
ex.num = 150; //우측에 있는 값을 좌측에 할당
ex.str = "홍길동";
ex.display();
System.out.println();
//1단계 + 2단계 : 클래스 선언 및 클래스 객체 생성
Ex01_class ex1 = new Ex01_class(); //위에 참조변수가 있기 때문에 참조변수를 다른것을 지정
System.out.println("ex1 >>> " +ex1);
ex1.num =235;
ex1.str = "유관순";
ex.display();
}
}
배열이름에는 5개를 잡으면 5개의 연속된 데이터가 생기는 접근을 해야하는데 heap이라는 메모리는 직접적으로 접근을 못하게 되어 있다. 배열은 배열 이름에다가 넣어주고 배열이름의 주소값을 따라 들어가면 배열 이름의 이 공간이 배열이 5개가 연속적으로 잡혀 있는것. 방마다 0번째 인덱스부터 집어 넣는것이다. 객체도 속성과 기능으로 구성되어있는데 객체마다 속성의 갯수와 기능의 갯수가 다 다르다. 그래서 heap이라는 메모리 공간에 저장이 되어 있는다. 이걸 사용하기 위해서는 new라는 키워드를 사용해야한다. heap이라는 메모리를 만들어지는데. 멤버변수, 생성자, 멤버메서드가 만들어지고 만들어진 것에 heap메모리에 직접적으로 접근을 할 수가 없기 떄문에 참조변수에 이 객체의 시작 주소값을 넣어주고,
이 시작 주소값에 가면 Ex_Class의 메모리가 저장되어 있는것이다.
여기에 접근을 하게 되는 것이다.
먼저 new라는 키워드를 사용해서 heap이라는 공간에 객체를 만들어야한다.
먼저 만들지 않고 불러내면 오류가 되기 때문에 먼저 객체를 생성해야지만 ex라는 메모리를 만들 수가 있다.
//1단계 + 2단계 : 클래스 선언 및 클래스 객체 생성
Ex01_class ex = new Ex01_class();
System.out.println("ex >>> " +ex);
객체를 생성했기 때문에 접근을 할 수 있었던 것이다.
멤버 변수로 선언한 num, str
멤버 메서드로 선언한 display
참조 주소가 시작 주소값 => 객체가 만들어져 있다. 이 객체에 접근을 하려면 점( . ) 메서드로 접근, 멤버 변수에 다 접근을 할 수 있다.
ex => 주소값
요약
객체, 배열 같은 경우는 자료형의 크기가 정해지지 않았다. heap메모리 공간에 만들어져야 하는데 이 때 new라는 키워드를 이용해서 접근해야한다. heap이라는 메모리에는 직접적으로 접근이 불가하기 때문에
참조 주소값으로 접근이 가능하다.
배열 = 배열이름에 주소값이 있고, 객체 = 참조변수에 주소값이 있다.
- 06_Class & Method-Class-Ex02_TV
* 클래스(class)와 객체(object)
* - 클래스 : 객체를 정의해 놓은 것(추상화).
* - 객체 : 클래스에 의해서 만들어진 결과물(실제화)
* 예) 제품설계도(클래스) ==> 제품(객체)
* - 인스턴스화 : 클래스를 이용하여 객체를 만들어 가는 과정.
* - 클래스(1) : 객체(N)
package Class;
/*
* 클래스(class)와 객체(object)
* - 클래스 : 객체를 정의해 놓은 것(추상화).
* - 객체 : 클래스에 의해서 만들어진 결과물(실제화)
* 예) 제품설계도(클래스) ==> 제품(객체)
* - 인스턴스화 : 클래스를 이용하여 객체를 만들어 가는 과정.
* - 클래스(1) : 객체(N)
*/
public class Ex02_TV {
//멤버변수(속성이 3개)
String color; // TV 색상
boolean power; // TV 전원
int channel; // TV 채널
//멤버메서드
void power() { // TV 전원을 누르는 메서드
power =!power; //false의 not을 power에 넣으면 true(켜진다)
}
void channeUp() { //TV 채널을 올리는 메서드
if(power) { //(파워가 참이면 채널하나 증가 시켜주세요, 전원이 켜져있으면
channel++; // 채널을 하나 증가
}
}
void channelDown() { //TV 채널을 내리는 메서드
if(power) {
channel--; // 채널을 하나 감소
}
}
void display() { //TV 상태를 표시하는 메서드
String status = "";
if(power) {
status = "전원 On";
}else {
status = "전원 OFF";
}
System.out.println("TV 색상 >>> " + color);
System.out.println("TV 전원 >>> " + status);
System.out.println("TV 채널 >>> " + channel);
}
public static void main(String[] args) {
//1단계 + 2단계 : 클래스 선언 및 클래스 객체 생성
Ex02_TV tv = new Ex02_TV();
tv.display();
System.out.println();
tv.color = "검정색";
tv.channel = 7;
tv.channeUp(); //채널 증가하는 메서드 호출
tv.display();
System.out.println();
//(전원이 오프 되어있는 상태라서 채널이 증가하지 않음)
// TV 작동
tv.power(); //전원 On
tv.channeUp(); //TV 채널 하나 증가
tv.display();
System.out.println();
//(전원이 온 되어있는 상태에서 채널을 증가 시키면 증가됨)
/*
* [문제] TV 객체를 만드뢰 tv1이라는 참조변수를 이용하여
* 객체를 만들어 아래와 같이 정보를 변경하세요.
* 조건1) 색상 : 흰색, 전원 : OFF, 채널 : 15
* 조건2) tv1 정보를 화면에 출력 - display() 메서드 호출
* 조건3) tv1 정보를 다음과 같이 변경하여 화면에 출력해 보세요.
* 색상 : 흰색, 전원 : on, 채널 : 28
*/
//조건1
Ex02_TV tv1 = new Ex02_TV();
tv1.color = "흰색"; //조건1)
tv1.channel = 15; //조건1)
tv1.display(); //조건2)
System.out.println();
//조건3
//tv.channel = 28;
//(이렇게 다이렉트로 해줘도 되지만 위에서
//channelUp() :기능적으로 채널을 올리기 위한 메서드
//channelUp()메서드를 지정해 줬기 때문에 )
for(int i=tv1.channel; i<28; i++) {
tv1.channeUp();
}
tv.display(); // 조건3
System.out.println();
/*
* [문제] TV 객체를 만드뢰 tv2이라는 참조변수를 이용하여
* 객체를 만들어 아래와 같이 정보를 변경하세요.
* 조건1) 색상 : 흰색, 전원 : OFF, 채널 : 32
* 조건2) tv2 정보를 화면에 출력 - display() 메서드 호출
* 조건3) tv2 정보를 다음과 같이 변경하여 화면에 출력해 보세요.
* 색상 : 검정색, 전원 : on, 채널 : 11
*/
Ex02_TV tv2 = new Ex02_TV();
//은 왜 안하는지?? tv2.power();
tv2.color = "흰색";
tv2.channel = 32;
tv2.display();
System.out.println();
tv2.color = "검정색";
tv2.power();
for(int i=tv2.channel; i>11; i--); {
tv2.channelDown();
}
tv2.display();
}
true값을 파워
- 06_Class & Method-Class-Ex03_Person
방법1 : 객체에 변수 선언
방법2 : 멤버변수를 선언 하지 않고 외부에다가 객체를 만들어서 그 객체를 가져다가 객체를 선언하는 방법
외부에 있는 클래스에 접근
두 개의 클래스가 필요하다.
- Ex03_Person (main 메서드를 선언)
- Person (main 메서드를 선언 하지 않은 클래스)
1.
package Class;
public class Person {
//멤버변수
String name;
int age;
boolean marrige;
int numberOfChild;
//멤버메서드
void display() {
String mar = "";
if(marrige) {
mar = "기혼";
}else {
mar = "미혼";
}
System.out.println("이 름 : " + name);
System.out.println("나 이 : " + age);
System.out.println("결혼여부 : " + mar);
System.out.println("자녀 수 : " + numberOfChild);
}
}
2.
package Class;
public class Ex03_Person {
public static void main(String[] args) {
Person person = new Person(); //(설계도를 생성하고)
//(이전에는 객체에 변수 선언 , 멤버변수를 먼저 선언 하지 않고 외부에다가 객체를 만들어서 가져다가 객체를
//(생성한 방법)
//(외부에 있는 클래스에 접근)
person.name = "홍길동";
person.age = 27;
person.display();
}
}
- 06_Class & Method-Class-Ex04_Student, Ex05_Student
두 개의 클래스가 필요하다.
- Ex04_Student (main 메서드를 선언)
- Student (main 메서드를 선언 하지 않은 클래스)
package Class;
/*
* 1. 클래스를 대상으로 객체를 생성하는 과정.
* 형식) 클래스명 참조변수 = new 클래스명(); //(X)
* 클래스명 참조변수 = new 생성자(); //(o)
*
* 2. 생성자(Constructor)?
* 1) 클래스를 대상으로 객체를 생성하는 역할을 하는 놈.
* 2) 클래스의 이름과 동일함.
* 3) 클래스에 포하뫼어 있으며, 객체를 생성할 때 자동으로 딱 한 번만 호출이 됨.
* 4) 클래스는 생성자를 통해서 객체로 생성이 됨.
* 생성자 형식)
* [접근제한] 생성자이름(매개변수) {
* 생성자 호출시 실행될 문장;
* }
* 5) 생성자는 메서드 형태를 가지고 있음.
* ==> 리턴타입(반환형)(X), void(X), 매개변수(O)
* 6) 모든 클래스는 반드시 한 개 이상의 생성자를 가지고 있음.
* 7) 사용자가 생성자를 정의하지 않으며, JVM이 컴파일 시점에서
* 자동으로 기본 생성자를 만들어줌.
*
* 3. 생상자의 사용 목적 : 멤버변수들의 초기화를 목적으로 사용됨.
*
* 4. 생성자의 특징
* 1) 생성자 이름 == 클래스 이름
* 2) 메서드와 다르게 반환형이 없음
* 3) 클래스는 반드시 한개 이상의 생성자를 가지고 있음.
* 4) 생성자 오버로딩이 가능함(즉, 여러 개의 생성자가 존재할 수 있음)
* 5) 생성자가 보이지 않으면 기본 생성자가 숨어 있음.
* 6) 기본 생성자라 함은 매개변수가 없는 생성자를 말함.
* 7) 기본 생성자 외의 다른 생성자를 만들면, 숨어 있던 기본 생성자는 사라짐.
* 8) 기본 생성자 외의 다른 생성자를 만들면, 무조건 기본 생성자를 만들어 줄 것.
* (만약 기본 생성자를 만들지 않으면 상속에 문제가 발생함 ==> 상속에서 추후 설명할 예정)
*/
public class Student {
// 멤버변수
int hakbun; //학생 학번
String name; //학생 이름
String major; //학생 학과
String addr; //학생 주소
//기본 생성자
public Student() { } //(매개변수의 갯수가 0)
//인자 생성자
public Student(int h, String n, String m, String a) {
//(매개변수의 갯수 4)
hakbun = h;
name = n;
major = m;
addr = a;
}
//멤버메서드
void display() {
System.out.println("학번 >>> " + hakbun);
System.out.println("이름 >>> " + name);
System.out.println("학과 >>> " + major);
System.out.println("주소 >>> " + addr);
}
}
1.
public class Student {
// 멤버변수
int hakbun; //학생 학번
String name; //학생 이름
String major; //학생 학과
String addr; //학생 주소
//기본 생성자
public Student() { } //(매개변수의 갯수가 0)
//인자 생성자
public Student(int h, String n, String m, String a) {
//(매개변수의 갯수 4)
hakbun = h;
name = n;
major = m;
addr = a;
}
//멤버메서드
void display() {
System.out.println("학번 >>> " + hakbun);
System.out.println("이름 >>> " + name);
System.out.println("학과 >>> " + major);
System.out.println("주소 >>> " + addr);
}
2.
package Class;
public class Ex04_Student {
public static void main(String[] args) {
// 기본생성자로 객체를 생성한 예
Student student = new Student();
student.hakbun = 2021001;
student.name = "홍길동";
student.major = "경제학과";
student.addr = "서울시 마포구";
student.display();
System.out.println();
Student student2 =
new Student(2021002, "유관순", "회계학과", "충남 천안시");
student2.display();
}
}
기본생성자를 통해서 객체가 생성이 되는것, 멤버변수에는 JVM에 알아서 디폴트값을 넣어주세요. 생성자 오버로딩이 가능하다.
객체를 생성할 때 기본생성자를 이용할 수 있고, 인자 생성자를 이용할 수 있다.
방법적으로 차이가 있다.
Student student2 =
new Student(2021002, "유관순", "회계학과", "충남 천안시"); ==> 인자생성자
차례대로 저장이 되는 것이다.
int h = 2021002
String n = 유관순
String m = 회계학과
String a = 충남 천안시
생성자를 호출해 주게 되면 = > 생성자 호출시 실행되는 문장
h라는 매개변수에 있는 값을 hakbun이라는 매개변수에 넣어주라는 말이다,
n이라는 매개변수에 있는 값을 name이라는 매개변수에 넣어주라는 말이다.
기본생성자를 호출해줬을 때는 멤버변수에 아래 사진 처럼 초기 값을 할당해 줘야한다.
인자 생성자 있으면 아래의 그림 처럼 데이터를 집어넣게 되면 그 데이터에 받은 값은 멤버변수의 초기값에 할당을 해주는 것이다,
코드가 간단해 진다.
배열이름에 주소값으로 접근
참조주소의 주소값으로 접근
클래스는 객체를 만들기 위한 설계도
객체를 여러개 만들 수 있음.
객체 고유마다 특징이 있어서 여러번 사용할 수 있다.
여러 학생의 정보를 저장하는 것이 객체
https://docs.oracle.com/javase/8/docs/api/
Java Platform SE 8
docs.oracle.com
문자열을 선언해주고 ture면 기혼, false면 미혼
06_Class & Method-Class-Ex06_Member, Ex07_Member
두 개의 클래스가 필요하다.
- Ex06_Member (main 메서드를 선언)
- Student (main 메서드를 선언 하지 않은 클래스)
package Class;
public class Member {
//멤버변수
String name; // 회원이름
int age; // 회원 나이
String phone; // 회원 연락처
String job; // 회원 직업
//기본 생성자
public Member() {
}
//인자 생성자
public Member(String n, int y, String p, String j) {
name = n;
age = y;
phone = p ;
job = j;
}
//멤버메서드
void getMembeInfo() {
System.out.println("회원 이름 >>> " + name);
System.out.println("회원 나이 >>> " + age);
System.out.println("회원 연락처 >>> " + phone);
System.out.println("회원 직업 >>> " + job);
}
}
package Class;
public class Ex06_Member {
public static void main(String[] args) {
Member member1 = new Member();
member1. name = "홍기동";
member1. age = 30;
member1.phone = "010-1111-2222";
member1.job = "개발자";
member1.getMembeInfo();
System.out.println();
Member member2 =
new Member("홍길동", 30, "010-1111-2222", "개발자");
member2.getMembeInfo();
}
}
package Class;
import java.util.Scanner;
public class Ex07_Member {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("당신의 이름, 나이, 연락처, 직업을 입력해주세요....");
Member member =
new Member(sc.next(), sc.nextInt(), sc.next(), sc.next());
member.getMembeInfo();
//System.out.println("당신의 이름을 입력하세요. : ");
//String name = sc.next();
// System.out.print("당신의 나이을 입력하세요. : ");
// int age = sc.nextInt();
// System.out.print("당신의 연락처를 입력하세요. : ");
// String phone = sc.next();
// System.out.print("당신의 직업을 입력하세요. : ");
// String job = sc.next();
//Member member = new Member(name, age, phone, job);
sc.close();
}
}
06_Class & Method-Class-Ex08_Static
두 개의 클래스가 필요하다.
- Ex08_Static (main 메서드를 선언)
- Static (main 메서드를 선언 하지 않은 클래스)
* 자바에서 사용되는 용어들.
* 1. 변수 : 프로그램이 끝날때 까지 언제든지 변할 수 있는 속성(데이터).
* ==> 소문자로 시작
* 2. 상수 : 프로그램이 끝날때 까지 절대 변하지 않는 속성(데이터).
* ==> 모든 글자가 대문자.
* 3. instance(인스턴스) 변수 / 메서드
* - 객체의 생성과 동시에 만들어지는 변수/ 메서드.
* - 객체는 haep 메모리 공간에 만들어짐.
* 반드시 객체 생성 후에 사용이 가능함.
* - 호출방법 : 참조변수.멤버변수/ 참조변수.멤버메서드
* 4. static(스태틱, 정적) 변수/ 메서드
* - 객체의 생성과 상관없이 별도로 만들어지는 변수/ 메서드.
* - static 메모리(method영역)에서 별도로 만들어짐.
* - 공통으로 사용되는 변수/ 메서드.
* - 객체를 생성하지 않아도 어느 클래스에서나 접근 가능.
* - 접근하는 방법이 쉬우나 실제로 항상 메모리에 상주하게 되어
* 메모리 회수가 안되는 단점이 있음. 시스템이 며칠, 몇 주,
* 혹은 몇 달 정도 가동이 되면 점점 느려지는 현상이 발생을 함.
* - 호출방법 : 클래스이름.멤버변수/ 클래스이름.멤버메서드
package Class;
/*
* 자바에서 사용되는 용어들.
* 1. 변수 : 프로그램이 끝날때 까지 언제든지 변할 수 있는 속성(데이터).
* ==> 소문자로 시작
* 2. 상수 : 프로그램이 끝날때 까지 절대 변하지 않는 속성(데이터).
* ==> 모든 글자가 대문자.
* 3. instance(인스턴스) 변수 / 메서드
* - 객체의 생성과 동시에 만들어지는 변수/ 메서드.
* - 객체는 haep 메모리 공간에 만들어짐.
* 반드시 객체 생성 후에 사용이 가능함.
* - 호출방법 : 참조변수.멤버변수/ 참조변수.멤버메서드
* 4. static(스태틱, 정적) 변수/ 메서드
* - 객체의 생성과 상관없이 별도로 만들어지는 변수/ 메서드.
* - static 메모리(method영역)에서 별도로 만들어짐.
* - 공통으로 사용되는 변수/ 메서드.
* - 객체를 생성하지 않아도 어느 클래스에서나 접근 가능.
* - 접근하는 방법이 쉬우나 실제로 항상 메모리에 상주하게 되어
* 메모리 회수가 안되는 단점이 있음. 시스템이 며칠, 몇 주,
* 혹은 몇 달 정도 가동이 되면 점점 느려지는 현상이 발생을 함.
* - 호출방법 : 클래스이름.멤버변수/ 클래스이름.멤버메서드
*/
public class Static {
// 멤버변수
int su1 = 200; // 인스턴스 변수
int su2 = 100; // 인스턴스 변수
static int num = 500; //static(정적) 변수
//앞에 그택티ㅣㄹ
//멤버메서드
void sum() {
System.out.println("sum >>> " + (su1 + su2));
}
static int adder(int n1, int n2) { //static(정적) 메서드
return n1 + n2;
}
}
package Class;
public class Ex08_Static {
public static void main(String[] args) { //기본적으로 Ex08_Static을 사용하기 위해서
//(객체를 생성해서 하는 방법이 좋은 방법이다)
System.out.println(Static.num);
System.out.println
("adder() 메서드 호출 결과 >>> " + Static.adder(150,30));
Static static1 = new Static();
System.out.println("su1 >>> " + static1.su1);
System.out.println("su2 >>> " + static1.su2);
static1.sum();
}
}
'coding > [2021.08.02~2022.01.24] 수업복습' 카테고리의 다른 글
[수업 10일차] 21.08.13 상속(inheritance), 메서드 재정의(Method overloading) Exam 문제 풀이 (다시) (0) | 2021.08.14 |
---|---|
[수업 9일차] 21.08.12, 객체배열, 캡슐화 (0) | 2021.08.12 |
[수업 7일차] 21.08.10, method, call-by-value ,call-by-reference , 실인수, 가인수 (0) | 2021.08.11 |
[수업 6일차] 21.08.09, Exam01, Exam02, Exam03, method (0) | 2021.08.10 |
[수업 5일차] 2021.08.06, 배열, 보조제어문, 가변배열 (0) | 2021.08.06 |