Part2. 메소드 나머지 부분 & Part 3. 클래스와 객체(11. 클래스와 객체)
자바 클래스 선언하기
class 클래스 이름 {
접근 지정자, 자료형, 변수;
접근 지정자, 생성자() {
...
}
접근 지정자, 자료형, 메서드 이름() {
...
}
// 절대값 구하기
package training;
public class Ex01 {
static int compare(int a){
//int abs;
if(a<0){
a=-a;
}
return a;
// 함수를 호출해 준 곳으로 결과값으로 구한 절대값을 되돌려준다.
//System.out.println(a);
}
public static void main(String[] args) {
int a=-5; // 지역변수
System.out.println("compare(a) : " + compare(a));
}
}
// 1부터 입력 받은 수 까지의 자연수의 합을 구하시오.
// 입력 받은 수의 팩토리알을 구하시오.
package training;
public class Ex03 {
static int sum(int n){
int total=0;
for(int i=1;i<=n;i++){
total+=i;
}
return total;
}
static int fac(int m){
int total=1;
for(int i=1;i<=m;i++){
total*=i;
}
return total;
}
public static void main(String[] args) {
int n=Integer.parseInt(args[0]);
System.out.println(" total =" + sum(n));
System.out.println(" fac =" + fac(5));
}
}
접근 지정자 :
// 객체 설명
package training;
// 새로운 자료형을 설계 -> 객체(인스턴스변수를 찍어 내기위한 틀)
class Animal{ // 클래스 내부에 멤버를 정의
// 변수 형태의 속성 : 단순히 값을 저장하는 용도로 사용된다.
private String name;
// 캡슐화는 속성에 합당한 값만 저장할 수 있도록 하기 위해서 속성을
// 외부에서 접근 못하도록 하고 대신 메소드로 접근하도록 한다.
private int age; // 접근 지정자 private은 해당 멤버를
// 자신의 클래스내의 메소드에서만 사용가능
public String getName(){ // 속성값을 얻어옴(getter)
return name;
}
public void setName(String new_name){ // 속성을 새로운 값으로 설정(setter)
name=new_name;
}
public int getAge(){ // 속성값을 얻어옴(getter)
return age;
}
public void setAge(int new_age){ // 속성을 새로운 값으로 설정(setter)
if(new_age>=0)
age=new_age;
}
}
public class Ex04 {
public static void main(String[] args) {
// 클래스로 선언된 변수는 레퍼런스 변수로 실질적으로
// 값을 저장할 공간을 마련하지 못한다. -> 실체를 참조하는 용도로 쓰인다.
Animal a; // a는 선언 시, 기술한 자료형에 의해 형태가 결정된다.
// 클래스로 실질적인 값을 저장할 공간을 마련하기 위해서는
// new 연산자를 사용한다.
// 힙영역에 생성된 실체는 이름이 없지만
// new 연산자가 메모리 할당 후, 그 메모리의 위치정보를 되돌려 주면
// 그 위치정보를 레퍼런스변수에 저장해야만 이 실체에 접근할 수 있다.
a=new Animal();
// 객체를 멤버 단위로 접근해서 사용함 : 멤버 참조 닷 연산자
a.setName("사자"); //="원숭이"; // Animal 객체의 이름을 설정한다.
a.setAge(26);
// a.age=-26; // Animal 객체의 나이를 설정한다. // 속성을 새로운 값으로 설정
// 이름하고 나이를 출력
System.out.println(a.getName() + " , " + a.getAge()); // 속성값을 얻어옴
// Animal 객체를 하나더 생성하여
// 레퍼런스 변수 b로 접근하도록 하고
// 이름은 "펭귄" 나이는 12로 저장하고 출력
/*Animal b = new Animal();
b.name="펭귄";
b.age=12;
System.out.println(b.name + "," + b.age);*/
}
}
// int x를 private로 바꿨을 때 출력하기 위한 작업을 하시오.
package training;
class Thing{
private int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
public class Ex05 {
public static void main(String[] args) {
Thing thing = new Thing();
thing.setX(10); //=10;
System.out.println("x : " + thing.getX());
}
}
// 속성으로 자판기에서 취급하는 제품의 정보를 저장하는 변수와 이를 다루기 위한 메소드를 갖는 자판기 클래스를 선언하고
// 다음과 같은 결과가 나오도록 객체 생성 후 메소드를 호출하시오.
// 복습할 때 모듈화를 시키시오.
// name, price를 private로 지정하고 출력할 수 있는 작업을 하시오.
package training;
class Product{
private String name;
private int price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
public class Ex06 {
public static void main(String[] args) {
/* Product a = new Product();
a.name="커피";
a.price=500;
Product b = new Product();
b.name="웰치스";
b.price=700;
Product c = new Product();
c.name="포카리";
c.price=500;
Product d = new Product();
d.name="비타500";
d.price=500;
for(int i=1;i<=4;i++)
// System.out.println(a[i].name + ":" + a[i].price + "원");
System.out.println(a.name + ":" + a.price + "원");
System.out.println(b.name + ":" + b.price + "원");
System.out.println(c.name + ":" + c.price + "원");
System.out.println(d.name + ":" + d.price + "원"); */
// 레퍼런스 변수가 4개 필요
Product [] a= new Product[4]; // 레퍼런스 값 4개 저장되는 배열
// 인스턴스 4개 생성해서 레퍼런스 변수가 가리키도록 해야 함
for(int i=0;i<a.length;i++){
a[i] = new Product();
}
a[0].setName("커피") ; a[0].setPrice(150);
a[0].setName("웰치스") ; a[0].setPrice(700);
a[0].setName("포카리") ; a[0].setPrice(500);
a[0].setName("비타500") ; a[0].setPrice(500);
for(int i=0;i<a.length;i++){
System.out.println(a[i].getName() + " , " + a[i].getPrice());
}
}
}
'수업 > 자바2JDK입문' 카테고리의 다른 글
Part 4. 상속 I (0) | 2008.08.08 |
---|---|
Part 3. static (2) | 2008.08.07 |
Part 3. 생성자 (0) | 2008.08.07 |
Part 2 & 3 메소드와 클래스 (0) | 2008.08.06 |
PART 2(7 제어문의 다양한 활용 ~ 10 사용자정의 메서드 만들기) (0) | 2008.08.04 |