> class
클래스는 객체를 만들기 위한 틀
클래스 안에는 멤버변수와 메소드가 존재한다
-클래스의 변수는 객체의 속성이다
-클래스의 메소드는 객체의 기능이다
*(선언 위치에 따른) 변수의 종류
1) 멤버변수 member variable (클래스변수/인스턴스변수) - 클래스 내부에서 생성되고 사용됨 - 생성 시 기본값으로 자동 초기화됨
2) 지역변수 local variable - 메소드, 생성자 내부(블록{ })에서 생성되고 사용됨 - 메소드 종료와 동시에 소멸됨 - 초기화 필수
public class Variable {
int a;
void varNum(int c) {
int b = 1;
}
//a: 멤버변수
//b: 지역변수
//c: 매개변수
public calss ObjectBasic {
public static void main(String[] args) {
System.out.println(add(5)); //5 //메소드 add1
System.out.println(add(10)); //15
System.out.println(add(3)); //18
System.out.println(add2(10)); //10 //첫번째 계산기로 새로운 계산을 할 수 없음, 두번째 계산기 필요(메소드 add2)
System.out.println(add2(20)); //30
}
//첫번째 계산기
static int result = 0; //main밖에서 (class안에서) 변수 생성 - 멤버변수 / static
static int add(int a) { //메소드 add
result += a;
return result;
}
//두번째 계산기
static int result2 = 0;
static int add2(int a) { //메소드 add2
result2 += a;
return result2;
}
}
main 메소드가 있는 클래스에서 main 메소드가 없는 다른 클래스를 불러와 사용한다
각각의 클래스는 개별적으로 생성한다
객체생성명령: 클래스명 변수명 = new 클래스명();
클래스의 메소드 사용 시: 클래스변수명.메소드명(매개변수 값)
//main 메소드가 없는 클래스
public class Calculator { //클래스 이름 Calculator
int result = 0;
int add(int a) { //메소드 add
result += a;
return result;
}
}
//main 메소드가 있는 클래스
public class ObjectBasic {
public static void main(String[] args) { //main
System.out.println("첫 번째 계산");
Calculator cal1 = new Calculator(); //객체생성명령 - 처음으로 불러옴 cal1
System.out.println(cal1.add(5)); //5 //변수명.메소드명(매개변수 값)
System.out.println(cal1.add(10)); //15
System.out.println(cal1.add(3)); //18
System.out.println("두 번째 계산기");
Calculator cal2 = new Calculator(); //객체생성명령 - 두 번째로 불러옴 cal2
System.out.println(cal2.add(10)); //10
System.out.println(cal2.add(20)); //30
}
}
클래스의 변수에 값 저장 시: 클래스변수명.변수명 = 값;
//main 메소드가 없는 클래스
public class Pen { //클래스 Pen
String ink; //멤버변수
int price;
String company;
void write() { //메소드 write
System.out.println(ink + "색 글씨를 씁니다");
}
void info() { //메소드 info
System.out.println("색상: " + ink);
System.out.println("가격: " + price);
System.out.println("제조사: " + company);
}
}
//main 메소드가 있는 클래스
public class Penmain { //클래스 Penmain
public static void main(String[] args) { //main
Pen black = new Pen(); //객체생성 black
black.ink = "검정";
black.price = 2000;
black.company = "모나미"; //클래스 Pen의 변수에 값 저장
black.write(); //클래스 Pen의 메소드 write 사용
Pen red = new Pen(); //객체생성 red
red.ink = "빨강";
red.price = 3000;
red.company = "하이테크"; //클래스 Pen의 변수에 값 저장
red.write(); //클래스 Pen의 메소드 write 사용
black.info(); //메소드 info사용
red.info();
}
}
> 생성자 constructor
객체 생성에서 new 키워드 다음에 오는 것
주된 역할 : 객체의 상태(멤버변수) 초기화
생성자는 클래스 이름과 완전히 동일, 반환유형 없음
클래스에 최소한 하나 이상 (만들지 않은 경우 자동으로 만들어져 있음)
여러개 생성 가능 (생성자 오버로딩) - 단, 매개변수의 종류/개수를 다르게 설정해야 함
일반적으로 생성자는 2개 (기본 생성자, 모든 멤버변수를 초기화 해주는 생성자) 를 가장 많이 사용함
객체생성 → 생성자 블록 실행
객체생성 시 매개변수 값 입력 (ex. Phone galaxy = new Phone("갤럭시");)
//Phone 클래스
public class Phone {
String model;
int price;
String color;
Phone() { //생성자 이름 Phone = 클래스 이름 Phone
System.out.println("생성자 호출");
model = "샤오미";
price = 20000;
color = "green";
}
Phone(String pModel) { //매개변수를 포함한 생성자
model = pModel;
price = 30000;
color = "red";
}
Phone(String pModel, int pPrice, String pColor) { //매개변수가 3개인 생성자
model = pModel;
price = pPrice;
color = pColor;
}
void info() { //클래스 Phone 안에있는 메소드 info
System.out.println("모델: " + model);
System.out.println("가격: " + price);
System.out.println("색상: " + color);
}
}
//PhoneMain 클래스
public class PhoneMain {
public static void main(String[] args) {
Phone shaomi = new Phone(); //객체생성 -> 생성자실행
shaomi.info(); //Phone 클래스의 info 메소드
Phone galaxy = new Phone("갤럭시"); //객체생성 시 매개변수 값 입력
galaxy.info();
Phone iPhone = new Phone("아이폰", 100000, "white");
iPhone.info();
}
}
//생성자 호출 //객체생성에 의한 출력
//모델: 샤오미 //이후 info 메소드에 의한 출력
//가격: 20000
//색상: green
//모델: 갤럭시
//가격: 30000
//색상: black
//모델: 아이폰
//가격: 100000
//색상: white
*클래스 종류
1) 사용자 정의 클래스 (사용자가 직접 만든)
2) 이미 만들어져 있는 클래스 (JDK에 포함된 / 다른 개발자가 만들어 놓은)
'course 2021 > JAVA' 카테고리의 다른 글
day10 - inheritance, overriding, overloading (0) | 2021.08.31 |
---|---|
day09 - package (0) | 2021.08.30 |
day07 - method (0) | 2021.08.25 |
day06 - array insert, update, delete (0) | 2021.08.24 |
day05 - control statement (2) | 2021.08.18 |