package myproject;
public class Ex169p {
public static void main(String[] args) {
Tv t; // Tv인스턴스를 참조하기 위한 변수 t를 선언 참조변수
t = new Tv(); // Tv인스턴스를 생성한다. 생성자 함수.
t.channel = 7; // Tv인스턴스의 멤버변수 channe1의 값을 7로 한다.
t.channelDown(); // Tv인스턴스의 메서드 channe1Down()을 호출한다.
System.out.println("현재 채널은" + t.channel + " 입니다.");
t.print(); // Tv인스턴스의 메서드 print()을 호출한다.
int a; //값을 안줘서 보장할 수 없어. 값을 안줬더니 에러가 떠 그래서 지역변수는 초기화가 안됨
// System.out.println(a);
Tv[] tvArr = new Tv[3];
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();
tvArr[0].color = "red";
tvArr[1].color = "green";
tvArr[2].color = "blue";
for (int i = 0; i < tvArr.length; i++) {
System.out.println("\n" + i +"의 "+"tv색은? : "+ tvArr[i].color);
}
System.out.println(tvArr); //배열의 시작 주소
System.out.println(tvArr[0]); // 배열[0]이 갖고 있는 참조하는 주소
System.out.println(tvArr[1]);
System.out.println(tvArr[2]);
} //main
}//class
class Tv {
// Tv의 속성 (멤버변수) 멤버 변수는 값을 안 줬음에도 나옴 그래서 자동 초기화 된다.
String color; // 색상
boolean power; // 전원상태(on/off)
int channel; // 채널
//setter, getter
void setColor(String clor){ //color멤버변수에 인수값을 저장함 (구별해야됨)
//void 는 회피하는 것 없는 거 . 애는 다른 곳에 전달하는 게 아니라는 의미 (다른 곳에 퍼다주는게 아니라고 외부에서 받아가지고 세팅만 해주는 애랑 밖으로 돌려주는 값이 없다)
this.color = color; //void: 외부에 반환하는 값이 없음을 의미함
}
String getColor(){ //외부에 돌려주는 값은 String형임
return color; //컬러는 String이다. 스트링을 난 갖고 나간다. (String인 color를 반환함)
}
// Tv의 기능 (메서드)
void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() { ++channel; } // TV의 채널을 높이는 기능을 하는 메서드
void channelDown() { --channel; } // TV의 채널을 낮추는 기능을 하는 메서드
void print() {
System.out.println(color + "," + power + " ," + channel); } }
package myproject;
public class Ex169p {
public static void main(String[] args) {
Tv2 t; // Tv인스턴스를 참조하기 위한 변수 t를 선언 참조변수
t = new Tv2(); // Tv인스턴스를 생성한다. 생성자 함수.
t.channel = 7; // Tv인스턴스의 멤버변수 channel의 값을 7로 한다.
t.channelDown(); // Tv인스턴스의 메서드 channelDown()을 호출한다.
System.out.println("현재 채널은 " + t.channel + " 입니다.");
t.print(); // Tv인스턴스의 메서드 print()을 호출한다.
int a;
Tv2[] tvarr = new Tv2[3];
tvarr[0] = new Tv2();
tvarr[1] = new Tv2();
tvarr[2] = new Tv2();
tvarr[0].color = "red";
tvarr[0].color = "green";
tvarr[0].color = "blue";
for(int i = 0; i < tvarr.length; i++)
System.out.println(tvarr[i].color);
System.out.println(tvarr); //배열의 시작 주소
System.out.println(tvarr[0]); //배열[0]이 갖고 있는 참조하는 주소
System.out.println(tvarr[1]);
System.out.println(tvarr[2]);
t.setcolor("red");
System.out.println(t.getcolor());
t.setchannel(-55);
System.out.println(t.getChannel());
}
}
class Tv2 {
// Tv의 속성 (멤버변수) 멤버 변수는 값을 안 줬음에도 나옴 그래서 자동 초기화 된다.
String color; // 색상
boolean power; // 전원상태(on/off)
int channel; // 채널
//setter,getter
void setcolor(String color){ //color멤버 변수에 인수값을 저장함
this.color = color; //void: 외부에 반환하는 값이 없음을 의미함.
}
String getcolor(){ //외부에 돌려주는 값은 string형임.
return color; //color을 반환함, string형
}
void setchannel(int ch) { //ch의 범위를 확인해야 함: 채널수는 1~100이다.
if(ch >= 1 && ch <= 100)
channel = ch;
else
System.out.println("범위를 벗어났습니다. (유효한 수: 1~100)");
}
int getChannel() {
return channel;
}
// Tv의 기능(메서드)
void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() { ++channel; } // TV의 채널을 높이는 기능을 하는 메서드
void channelDown() { --channel; } // TV의 채널을 낮추는 기능을 하는 메서드
void print() {
System.out.println(color + "," + power + "," + channel);
}
}
교수님께서 작성하신 코드
package myproject;
public class Ex6_1 {
public static void main(String[] args) {
//객체가 없어도 클래스 static변수 출력
Tv.countTv = 100;
System.out.println("객체 생성 전 ->" + Tv.countTv);
Tv t; // Tv인스턴스를 참조하기 위한 변수 t를 선언
t = new Tv(); // Tv인스턴스를 생성한다.
t.channel = 7; // Tv인스턴스의 멤버변수 channel의 값을 7로 한다.
t.channelDown(); // Tv인스턴스의 메서드 channelDown()을 호출한다.
System.out.println("현재 채널은 " + t.channel + " 입니다.");
t.print();
int a; //
//System.out.println(a);
//객체배열
Tv[] tvarr=new Tv[3];
tvarr[0] = new Tv();
tvarr[1] = new Tv();
tvarr[2] = new Tv();
tvarr[0].color ="red";
tvarr[1].color ="green";
tvarr[2].color ="blue";
for(int i = 0; i < tvarr.length; i++)
System.out.println(tvarr[i].color);
System.out.println(tvarr); //배열의 시작 주소
System.out.println(tvarr[0]); //배열[0]이 갖고 있는 참조하는 주소
System.out.println(tvarr[1]);
System.out.println(tvarr[2]);
t.setColor("RED");
System.out.println(t.getColor());
t.setChannel(-55);
System.out.println(t.getChannel());
//static변수 출력
System.out.println("인스턴스 수-> " + t.getCountTv());
}//main
}//class
class Tv {
// Tv의 속성(멤버변수)
String color; // 색상
boolean power; // 전원상태(on/off)
int channel; // 채널
//정적static 변수 테스트
static int countTv = 0; // 클래스 변수
int getCountTv() {
return countTv;
}
//생성자 함수: default constructor
Tv(){
System.out.println("안녕하세요? 객체를 만듭니다.~~");
countTv++;
}
//setter, getter
void setColor(String color){ //color멤버변수에 인수값을 저장함
this.color = color; //void: 외부에 반환하는 값이 없음을 의미함
}
String getColor(){ //외부에 돌려주는 값은 String형임
return color; //color을 반환함, String형
}
void setChannel(int ch) {//ch의 범위를 확인해야 함: 채널수는 1-100이다.
if(ch >= 1 && ch <=100)
channel = ch;
else
System.out.println("범위를 벗어 났음: 1-100");
}
int getChannel() {
return channel;
}
// Tv의 기능(메서드)
void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() { ++channel; } // TV의 채널을 높이는 기능을 하는 메서드
void channelDown() { --channel; } // TV의 채널을 낮추는 기능을 하는 메서드
void print() {//멤버 변수: 기본값으로 초기화됨
System.out.println(color + ","+ power + "," + channel);
}
}
'백엔드 > JAVA' 카테고리의 다른 글
메서드의 실행 흐름 예제 6-4 참고하면서 만듦 add, sub, mul, div (0) | 2023.10.19 |
---|---|
173페이지 static을 활용 (0) | 2023.10.19 |
배열의 정의 (0) | 2023.10.19 |
169페이지 객체배열 (0) | 2023.10.19 |
예제 6-1 165페이지 참고 지역변수와 멤버 변수 (0) | 2023.10.19 |