728x90
반응형

 

 

문제1

 

▶ ColorTV 코드

public class ColorTV extends TV{
	private int color;
	
	ColorTV(int size, int color){
		super(size);
		this.color=color;
	}
	
	void printProperty(){
		System.out.println(getSize()+"인치 "+color+"컬러");
	}
}

 

▶ 출력 결과

32인치 1024컬러

 

 

 

문제2

 

▶ IPTV 코드

public class IPTV extends ColorTV{
	private String area;
	
	IPTV(String area, int size, int color){
		super(size,color);
		this.area=area;
	}
	void printProperty(){
		System.out.print("나의 IPTV는 "+area+" 주소의 ");
		super.printProperty();
	}
}

 

▶ 출력 결과

나의 IPTV는 192.1.1.2 주소의 32인치 2048컬러

 

 

 

728x90
반응형
728x90
반응형

문제1

다음 main() 메소드를 실행하였을 때 예시와 같이 출력되도록 TV 클래스를 작성하라.

public static void main(String[] args) {
   TV myTV = new TV("LG", 2017, 32); //LG에서 만든 2017년 32인치
   myTV.show();
}


결과 : LG에서 만든 2017년형 32인치 TV

 

▶  TV 코드

public class TV {
	private String business;
	private int year;
	private int inch;

	TV(String business, int year, int inch){
		this.business=business;
		this.year=year;
		this.inch=inch;
	}//TV의 매개변수를 가진 생성자. 초기화

	void show(){
		System.out.printf("%s에서 만든 %d년형 %d인치 TV\n", business, year, inch);
	}//입력된 결과를 출력
}

 

▶ main 코드

	public static void main(String[] args) {
		TV myTV = new TV("LG", 2017, 32); //객체 생성 및 초기화
		myTV.show(); //결과 : LG에서 만든 2017년형 32인치 TV

	}//main_end

 

▶ 출력 결과

LG에서 만든 2017년형 32인치 TV

 

 

 

문제2

다음 main() 메소드를 실행하였을 때 예시와 같이 출력되도록 Grade클래스를 작성하라. 3개의 과목의 점수를 입력받아 Grade 객체를 생성하고 성적 평균을 출력하는 main()과 실행 예시는 다음과 같다.

public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);
   System.out.print("수학, 과학, 영어 순으로 3개의 정수 입력 >> ");
   int math = sc.nextInt();
   int science = sc.nextInt();
   int english = sc.nextInt();
   Grade me = new Grade(math, science, english);
   System.out.println("평균은 "+me.average()); // average()는 평균을 계산하여 리턴   
   sc.close();
}

결과 : 수학, 과학, 영어 순으로 3개의 정수 입력 >> 90 88 96
평균은 91

 

▶  Grade 코드

public class Grade {
	private int math;
	private science;
	private english;

	Grade(int math, int science, int english){
		this.math=math;
		this.science=science;
		this.english=english;
	}//Grade의 매개변수를 가진 생성자. 초기화

	int average(){
		int avg = (math+science+english)/3;
		return avg;
	}//평균을 계산하여 정수 값을 리턴
	//90 88 96의 평균 =>  int형 91으로 출력. (실수 값으로 평균을 구했을 때는 91.33333333333333 값이 나온다.)
}

 

▶ main 코드

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		//과목별 점수 입력
		System.out.print("수학, 과학, 영어 순으로 3개의 정수 입력 >> ");
		int math = sc.nextInt();
		int science = sc.nextInt();
		int english = sc.nextInt();

		Grade me = new Grade(math, science, english);//객체 생성 및 초기화
		System.out.println("평균은 "+me.average()); //average()는 평균을 계산하여 리턴 

		sc.close();
	}//main_end

 

▶ 출력 결과

수학, 과학, 영어 순으로 3개의 정수 입력 >> 90 88 96
평균은 91

 

 

 

문제3

TV2 클래스를 상속받는 ColorTV 클래스를 만들어라. 출력 결과가 일치하도록 ColorTV 클래스를 작성하라.

public class TV2 {
	private int size;

	void setSize(int size){
		this.size = size;
	}
	
	int getSize(){
		return size;
	}
}
	public static void main(String[] args) {
		ColorTV myTV = new ColorTV();
		myTV.setSize(32);
		myTV.setColor(1024);
		myTV.printProperty();	
	}

출력 결과 : 32인치 1024컬러

 

▶  ColorTV 코드

public class ColorTV extends TV2{
	private int color;
	
	void setColor(int color){
		this.color=color;
	}
	
	void printProperty(){
		System.out.println(getSize()+"인치 "+color+"컬러");
	}
}

 

▶  출력 결과

32인치 1024컬러

 

 

 

문제4

▼ 실습 내용

 

[JAVA] TV 상속

문제1 ▶ ColorTV 클래스 코드 public class ColorTV extends TV{ private int color; ColorTV(int size, int color){ super(size); this.color=color; } void printProperty(){ System.out.println(getSize()+"인치 "+color+"컬러"); } } ▶ 출력 결과 32

deliciouscode.tistory.com

 

 

 

728x90
반응형

'HRD_훈련 > 실습' 카테고리의 다른 글

[JAVA] 심화 문제 풀이 (14일차)  (0) 2023.06.01
[JAVA] TV 상속  (0) 2023.05.31
[JAVA] 심화 문제 풀이 (12일차)  (0) 2023.05.31
[JAVA] 홀수→짝수 순으로 배열 정렬  (0) 2023.05.30
[JAVA] 선택 정렬 보완  (0) 2023.05.28
728x90
반응형

<오늘의 학습>

1. static / non-static

2. static / final

3. 클래스 안에서 this() 이용

4. 상속과 접근 제한자

5. 상속과 super() 호출

 

 

1.  static / non-static

▶ static 멤버

  • 객체를 생성하지 않아도 사용이 가능하다.
  • 객체마다 생기는 것이 아니고, 클래스당 하나만 생성되는 공간적 특성을 가지고 있다. (객체 내부가 아닌 별도의 공간에 생성되기 때문이다.)
  • static 멤버들은 클래스가 로딩될 때 공간이 할당되는 시간적 특성을 가진다. 객체가 생기기 전에 이미 생성이 되어 객체가 생기기 전에도 사용이 가능하다. 객체가 사라져도 멤버는 사라지지 않으며 프로그램이 종료될 때 사라진다.
  • static 멤버들은 동일한 클래스의 모든 객체에 의해 공유된다.
  • 클래스 멤버라고도 부른다.

 

▶ non-static 멤버

  • 멤버들은 객체마다 독립적으로 별도 존재하는 공간적 특성을 가지고 있다.
  • 객체가 생길 때 생성되기 때문에 객체가 생성된 뒤에 사용할 수 있다. 객체가 사라지면 멤버도 사라진다.
  • 멤버들은 각각의 공간을 유지하기 때문에 다른 객체에 의해 공유되지 않는다. (배타적) 
  • 인스턴스 멤버라고도 부른다.

 

 


▶ 예제) static 변수와 non-static 변수를 StaticClass에 넣고, main문에서 값을 바꿔꾸며 비교해 보자.

▷ StaticClass 코드

public class StaticClass {
	static int staticNum;
	int nonStaticNum;
}

 

main 코드

		StaticClass.staticNum=10;
		System.out.println("StaticClass.staticNum:"+StaticClass.staticNum);
		System.out.println(); //줄바꿈
		
		StaticClass obj = new StaticClass();
		obj.staticNum=30;
		
		System.out.println("StaticClass.staticNum:"+StaticClass.staticNum);
		System.out.println("obj.staticNum:"+obj.staticNum);

 

▷ 출력 결과

StaticClass.staticNum:10

StaticClass.staticNum:30
obj.staticNum:30
  • static 변수는 클래스 당 하나로 공동으로 사용된다. 객체로 접근하더라도 최종적으로 수정된 30으로 출력된다.

 

 


▶ 위 예제에서 staticClass 객체를 하나 더 생성하여 값을 출력해 보자.

▷ main 코드

		StaticClass obj2 = new StaticClass();
		obj2.staticNum=100;
		obj.nonStaticNum=20;
		obj2.nonStaticNum=200;
		
		System.out.println("StaticClass.staticNum:"+StaticClass.staticNum);
		System.out.println("obj.staticNum:"+obj.nonStaticNum);
		System.out.println("obj2.staticNum:"+obj2.nonStaticNum);

 

▷ 출력 결과

StaticClass.staticNum:100
obj.staticNum:20
obj2.staticNum:200
  • staticNum의 값은 최종적으로 수정된 100으로 출력된다.
  • non static 변수는 독립적이기 때문에 각각 가지고 있는 값이 출력된다.

 

 

 

2.  static / final

▶ static 활용

  • 전역 변수와 전역 함수를 만들 때 활용한다. 전역변수나 전역 함수는 static으로 클래스에 작성한다.
  • 모든 필드와 메소드가 public static으로 선언되면 다른 모든 클래스에서 사용할 수 있다.
  • 공유 멤버를 작성할 때, static 필드나 메소드는 하나만 생성하여 클래스의 객체들을 공유한다.
  • static 멤버를 가진 클래스 사례 :  Math 클래스 : java.lang.Math

 

 

▶ static 메소드의 제약 조건

static 메소드는 non-static 멤버에 접근할 수 없다. 객체가 생성되지 않은 상황에서도 static 메소드는 실행될 수 있기 때문에 non-static 메소드와 필드를 사용할 수 없다. 반대로 non-static 메소드는 static 멤버 사용이 가능하다.

static 메소드는 this 레퍼런스를 사용할 수 없다. static 메소드는 객체가 생성되지 않은 상황에서도 호출이 가능하므로, 현재 객체를 가리키는 this를 사용할 수 없다.

 

 

▶ final

static과 final는 주로 함께 이용된다.

final 필드 : 상수를 선언할 때 사용한다. 상수 필드는 선언 시에 초기 값을 지정하여야 하며, 실행 중에 값을 변경할 수 없다

final 클래스 : 클래스 상속을할 수 없게 한다.

final 메소드 : 오버라이딩을 할 수 없게 한다.

 

 


▶ 예제) static으로 작성된 전역 함수

▷ Calc 코드

public class Calc {
	public static int abs(int num){
		return (num>0)?num:-num;
	}
	
	public static int min(int num1, int num2){
		return (num1>num2)?num2:num1;
	}
	
	public static int max(int num1, int num2){
		return (num1>num2)?num1:num2;
	}
    
    public static double max(double num1, double num2){
		return (num1>num2)?num1:num2;
	}
    
	public static String strMax(String s1, String s2){
		return (s1.length()>s2.length())?s1:s2;
	}
	
}

 

▷ main 코드

	public static void main(String[] args) {
		System.out.println("절댓값:"+Calc.abs(-5));
		System.out.println("최솟값:"+Calc.min(4,8));
		System.out.println("최댓값:"+Calc.max(-4,8));
		System.out.println(); //줄바꿈
		
		System.out.println("실수의 최댓값:"+Calc2.max(1.5, 2.5));
		System.out.println("긴 문자열:"+Calc2.strMax("test", "test123"));
	}
  • static으로 작성된 전역 변수나 함수는 객체를 생성하지 않아도 접근이 가능하다.

 

▷ 출력 결과

절댓값:5
최솟값:4
최댓값:8

실수의 최댓값:2.5
긴 문자열:test123

 

 

 

3.  클래스 안에서 this() 이용

  • this()나 super()는 클래스의 첫 번째 줄에 작성해야 한다.

 

▶ 예제) this와 this()를 이용한 코드

public class Human {
	private String name;
	private String area;
	private String phone;
	private int age;
	
	Human(String name){
		this(name,"알수없음","알수없음",0);//중복된 내용을 작성하지 않을 수 있다.
	}
	
	Human(String name, String area){
		this(name,area,"알수없음",0);
	}
	
	Human(String name, String area, String phone){
		this(name,area,phone,0);
	}
	
	Human(String name, String area, String phone, int age){
		this.name=name;
		this.area=area;
		this.phone=phone;
		this.age=age;
	}
}

 

 

 

4. 상속과 접근 제한자

▶ 상속

  • 부모클래스에 만들어진 필드, 메소드를 자식클래스가 물려받는다.
  • 동일한 특성을 재정의할 필요가 없어 자식 클래스가 간결해진다.
  • 클래스들의 계층적 분류가 가능하며 클래스 관리에 용이하다.
  • 소프트웨어의 생산성이 향상된다.

 

▶ 접근 제한자

접근 제한자 접근 범위 동일 클래스 동일 패키지 다른 패키지의 자식 클래스(상속) 다른 패키지
public 접근제한 없음 O O O O
protected 동일 패키지
상속받은 클래스 내부
O O O  
default 동일 패키지 내에서만 접근 가능 O O    
private 동일 클래스 내에서만 접근 가능 O      

 

 

 

5. 상속과 super() 호출

▶ 예제) 상속을 이용한 생성자 호출

 TV2 클래스 코드

public class TV2 {
	TV2(){
		System.out.println("TV 기본 생성자");
	}
	
	TV2(int size){
		System.out.println("TV 파라미터 생성자");
	}
}

 

TV2를 상속받는 ColorTV 클래스 코드

public class ColorTV extends TV2{
	ColorTV(){
		System.out.println("ColorTV 기본 생성자");
	}
	
	ColorTV(int size, int color){
		System.out.println("ColorTV 파라미터 생성자");
	}
}

 

main 코드

		ColorTV hiTV = new ColorTV();

 

 출력 결과

TV 기본 생성자
ColorTV 기본 생성자
  • ColorTV 의 생성자를 호출하면 상속받는 TV2의 기본 생성자가 호출된다.
  • 서브 클래스의 생성자 맨 위에 super(); 가 생략된 형태이며, super(파라미터)를 이용하여 명시적으로 슈퍼 클래스의 생성자를 선택할 수 있다.

 

 


▶ 위 main 코드를 수정하여 ColorTV 파라미터 생성자를 호출해 보자.

 main 코드

		ColorTV hiTV = new ColorTV(32,1024);

 

 출력 결과

TV 기본 생성자
ColorTV 파라미터 생성자
  • ColorTV 의 파라미터 생성자를 호출하더라도 TV2는 기본 생성자가 호출된다.
  • TV 파라미터 생성자를 호출하고 싶다면 아래 예제를 계속 확인해 보자.

 

 


▶ ColorTV 클래스 코드를 수정하여 TV2 파라미터 생성자를 호출해 보자.

 ColorTV 클래스 코드

	ColorTV(int size, int color){
		super(5);
		System.out.println("ColorTV 파라미터 생성자");
	}
  • 호출하려는 생성자 맨 위에 super(파라미터 정수 5); 를 추가하면 작성한 파라미터와 매치되는 파라미터 생성자를 호출한다.

 

 출력 결과

TV 파라미터 생성자
ColorTV 파라미터 생성자

 

 

 

 


2023년 5월 31일 수요일

<13일차 수업 후기>

클래스를 작성할 때 보안을 위해 private를 많이 사용하고, 설정자(setXXX)와 접근자(getXXX)를 이용한 간접 접근을 많이 이용한다고 배웠다. 실무에서 주로 사용하는 방법이라고 하니 꼭 기억해야겠다.

728x90
반응형
728x90
반응형

1.  구구단에서 5단을 제외하고 출력

▶ 코드

		System.out.println("문제 1. 구구단에서 5단을 제외하고 출력하시오.\n");

		for(int i=2;i<=9;i++){
			if(i==5)
				continue; //5단은 출력X. 뒤에 내용을 생략

			System.out.println("<"+i+"단>");
			for(int j=1;j<=9;j++)
				System.out.printf("%d*%d=%2d\n",i,j,i*j);
			
			System.out.println();//줄바꿈
		}

 

▶ 출력 결과

문제 1. 구구단에서 5단을 제외하고 출력하시오.

<2단>
2*1= 2
2*2= 4
2*3= 6
2*4= 8
2*5=10
2*6=12
2*7=14
2*8=16
2*9=18

<3단>
3*1= 3
3*2= 6
3*3= 9
3*4=12
3*5=15
3*6=18
3*7=21
3*8=24
3*9=27

<4단>
4*1= 4
4*2= 8
4*3=12
4*4=16
4*5=20
4*6=24
4*7=28
4*8=32
4*9=36

<6단>
6*1= 6
6*2=12
6*3=18
6*4=24
6*5=30
6*6=36
6*7=42
6*8=48
6*9=54

//생략

 

 

 

2.  5개의 숫자를 입력받아서 배열 만들기 (단, 홀수만 배열에 들어가도록 작성)

▶ 코드

		System.out.println("문제 2. 5개의 숫자를 입력받아서 배열 만들되, 배열에는 홀수만 들어가도록 하시오.\n");

		Scanner scan = new Scanner(System.in);
		int[] arr=new int[5];

		for(int i=0;i<arr.length;i++){
			System.out.print((i+1)+"번째 배열 값을 입력하세요:");
			arr[i]=scan.nextInt();
			if(arr[i]%2==0){
				System.out.println("짝수 값이 아닌 홀수 값을 입력해주세요.\n");	//줄바꿈
				i--;
			}
		}

		//출력
		System.out.print("arr의 배열 값:");
		for(int i=0;i<arr.length;i++)
			System.out.print(arr[i]+" ");

		scan.close();

 

▶ 출력 결과

문제 2. 5개의 숫자를 입력받아서 배열 만들되, 배열에는 홀수만 들어가도록 하시오.

1번째 배열 값을 입력하세요:1
2번째 배열 값을 입력하세요:2
짝수 값이 아닌 홀수 값을 입력해주세요.

2번째 배열 값을 입력하세요:3
3번째 배열 값을 입력하세요:4
짝수 값이 아닌 홀수 값을 입력해주세요.

3번째 배열 값을 입력하세요:5
4번째 배열 값을 입력하세요:7
5번째 배열 값을 입력하세요:9
arr의 배열 값:1 3 5 7 9

 

 

 

3.   홀수→짝수 순으로 배열 정렬

▶ 실습 내용

 

[JAVA] 홀수→짝수 순으로 배열 정렬

 

deliciouscode.tistory.com

 

 

 

4.  Calculator 클래스 생성

  1. 두개의 정수를 매개변수로 받아서 곱한 값을 리턴해주는 multiple 메소드 생성
  2. 3개의 정수를 입력받아서 곱한 값을 리턴해주는 multiple 메소드 생성
  3. 4개의 실수(double)를 입력받아서 가장 큰 값을 리턴해주는 max 메소드 생성

 

Calculator 코드

public class Calculator {

	//2개의 정수를 매개변수로 받아서 곱한 값을 리턴해주는 multiple 메소드 생성
	int multiple(int num1, int num2){
		return (num1*num2);
	}
	
	
	//3개의 정수를 입력받아서 곱한 값을 리턴해주는 multiple 메소드 생성
	int multiple(int num1, int num2, int num3){
		return (num1*num2*num3);
	}
	
	
	//4개의 실수(double)를 입력받아서 가장 큰 값을 리턴해주는 max 메소드 생성
	double max(double num1, double num2, double num3, double num4){
		double max = num1<num2? num2:num1;
		max = max<num3? num3:max;
		max = max<num4? num4:max;

		return max;
		
		//double x = Math.max(num1, num2);
		//double y = Math.max(num3, num4);
		//return Math.max(x,y);
	}
}

 

▶ main 코드

		System.out.println("문제 4. Calculator 클래스를 생성하여 연산하시오.\n");
		
		Calculator calc = new Calculator();

		System.out.println("두 정수의 곱:"+calc.multiple(1, 2));
		System.out.println("세 정수의 곱:"+calc.multiple(1, 2, 3));
		System.out.println("네 개의 실수값 중 최댓값:"+calc.max(3.2, 2.5, 1.6, 0.1));

 

▶ 출력 결과

문제 4. Calculator 클래스를 생성하여 연산하시오.

두 정수의 곱:2
세 정수의 곱:6
네 개의 실수값 중 최댓값:3.2

 

728x90
반응형

'HRD_훈련 > 실습' 카테고리의 다른 글

[JAVA] TV 상속  (0) 2023.05.31
[JAVA] 심화 문제 풀이 (13일차)  (0) 2023.05.31
[JAVA] 홀수→짝수 순으로 배열 정렬  (0) 2023.05.30
[JAVA] 선택 정렬 보완  (0) 2023.05.28
[JAVA] 선택 정렬과 버블 정렬  (1) 2023.05.25
728x90
반응형

<오늘의 학습 - 클래스를 만들어 접근해 보자>

1. 원의 반지름 구하기

2. 계산기 만들기

3. 사각형 면적 구하기

4. 필드의 사용

5. 객체의 생성자와 오버로딩 이용

6. 객체 배열

7. 심화 문제 풀이

 

 

1.  원의 반지름을 구하는 클래스 만들기

Circle 코드

public class Circle {
	int radius; // 원의 반지름 필드
	String name; // 원의 이름 필드

	//생성자
	public Circle() {}

	// 원의 면적을 계산하는 메소드
	public double getArea() {
		return 3.14 * radius * radius;
	}
}

 

▶ main 코드

		Circle pizza = new Circle(); // Circle 객체 pizza 생성
		
		pizza.radius = 10; //피자의 반지름을 10으로 설정
		pizza.name = "자바피자"; //피자의 이름
		
		double area = pizza.getArea(); //피자의 면적 리턴
		System.out.println(pizza.name + "의 면적:" + area);
		
		Circle donut = new Circle(); //Circle 객체 donut 생성
		donut.radius = 2; //도넛의 반지름을 2로 설정
		donut.name = "자바도넛"; //도넛의 이름
		
		area = donut.getArea(); //도넛의 면적 리턴
		System.out.println(donut.name + "의 면적:" + area);

 

▶ 출력 결과

자바피자의 면적:314.0
자바도넛의 면적:12.56

 

 

 

2.  계산기 만들기

▶ Calculator 코드

public class Calculator {
	
	//최솟값
	int min(int a, int b){
		return (a>b)?b:a;
	}

	int min(int a, int b, int c){
		int min = (a>b)?b:a;
		return (min>c)?c:min;
		//return (min(a,b)>=c)? c : min(a,b);
	}

	//절댓값
	int abs(int num){
		return (num < 0)? -num : num;
	}
	
	//배열의 평균값
	double avg(int[] arr){
		int sum=0;
		for(int num : arr){
			sum += num;
		}

		return (double)sum/arr.length;
	}
	
	//배열의 최댓값
	int max(int[] arr){
		 for(int num : arr){
		 	max = Math.max(max,num);
		 }
		return max;
	}
	
	
	//값이 바뀌는지 확인
	void test1(int a){
		a=a+1;
	}

	void test2(int[] arr){
		arr[0]=100;
	}
}

 

 

▶ 최솟값 출력

		Calculator clac =  new Calculator();
        
		//최솟값
		int min = clac.min(8, 10);
		System.out.println("8,10 중 최솟값:"+min);

		min = clac.min(8, 5, 6);
		System.out.println("8,5,6 중 최솟값:"+min);
8,10 중 최솟값:8
8,5,6 중 최솟값:5

 

절댓값 출력

		int num = clac.abs(-2);
		System.out.println("-2의 절댓값:"+num);
-2의 절댓값:2

 

 배열 출력

		int arr[]={3,5,2,1,8};
		int max = clac.max(arr);
		System.out.println("배열의 최댓값:"+max);

		double avg=clac.avg(arr);
		System.out.println("배열의 평균값:"+avg);
배열의 최댓값:8
배열의 평균값:3.8

 

 클래스에서 변수와 배열의 값을 변경하고 반환하지 않았을 때의 값 비교

		int a=1;
        
		System.out.println("test1 호출 전 변수 값:"+a);
		clac.test1(a);
		System.out.println("test1 호출 후 변수 값:"+a); //값 안 바뀜
		System.out.println(); //줄 바꿈

		System.out.println("test2 호출 전 배열 값:"+arr[0]);
		clac.test2(arr);
		System.out.println("test2 호출 전 배열 값:"+arr[0]); //값이 100으로 바뀜
test1 호출 전 변수 값:1
test1 호출 후 변수 값:1

test2 호출 전 배열 값:3
test2 호출 전 배열 값:100
  • 변수는 호출만 했을 때는 값이 바뀌지 않는다. 하지만 배열은 호출하여 값을 바꾸면 그대로 값이 바뀐다.

 

 

 

3.  사각형 면적 구하기

 Rectangle 코드

public class Rectangle {
	int width; //너비
	int height; //높이
	
	//접근자. 너비와 높이를 이용해 면적을 리턴
	public int getArea(){
		return width*height;
	}
}

 

▶ main 코드

		Rectangle rectangle = new Rectangle();
		Scanner scan = new Scanner(System.in);
		
		//사각형의 너비와 높이를 직접 입력
		System.out.println("<사각형의 넓이 구하기>");
		System.out.print("너비의 길이를 입력하세요:");
		rectangle.width = scan.nextInt();
		
		System.out.print("높이의 길이를 입력하세요:");
		rectangle.height = scan.nextInt();
		System.out.println(); //줄바꿈
		
		//사각형의 면적을 계산하여 출력
		System.out.printf("사각형의 면적:%d\n", rectangle.getArea());
		
		scan.close();

 

▶ 출력 결과

<사각형의 넓이 구하기>
너비의 길이를 입력하세요:5
높이의 길이를 입력하세요:10

사각형의 면적:50

 

 

 

4.  필드의 사용

▶ main 코드

	int iNum1, iNum2;
	double dNum;

	//합을 구하는 메소드
	double sum(){
		return iNum1+iNum2+dNum;
	}
	
	public static void main(String[] args) {
		Practice threeSum = new Practice();
		Scanner scan = new Scanner(System.in);
		
		//숫자 입력
		System.out.println("<세 개의 숫자의 합 구하기>");
		System.out.print("첫 번째 숫자를 입력하세요(정수):");
		threeSum.iNum1 = scan.nextInt();	

		System.out.print("두 번째 숫자를 입력하세요(정수):");
		threeSum.iNum2 = scan.nextInt();
		
		System.out.print("세 번째 숫자를 입력하세요(실수):");
		threeSum.dNum = scan.nextDouble();
		System.out.println(); //줄바꿈
		
		//합 출력
		System.out.println("입력한 숫자의 합:"+threeSum.sum());		
	}//main_end

 

▶ 출력 결과

<세 개의 숫자의 합 구하기>
첫 번째 숫자를 입력하세요(정수):11
두 번째 숫자를 입력하세요(정수):22
세 번째 숫자를 입력하세요(실수):3.3

입력한 숫자의 합:36.3

 

 

 

 

5.  객체의 생성자와 오버로딩

Circle 코드

public class Circle {
	int radius;
	String name;
	
	Circle(){
		System.out.println("기본 생성자 호출");
	}
	
	Circle(int r, String name){
		System.out.println("매개변수 생성자 호출");
		
		radius=r; //매개변수를 받아와 radius에 값을 넣는다. radius=r보다는 this.radius=radius 으로 작성하는 방법을 추천한다.
		this.name=name;	//this를 사용하면 Circle 안의 radius를 뜻한다.
	}
}

 

▶ main 코드

		Circle c = new Circle();
		
		c = new Circle(5,"Jo");
		System.out.printf("radius:%d\nname:%s",c.radius,c.name);

 

▶ 출력 결과

기본 생성자 호출
매개변수 생성자 호출
radius:5
name:Jo

 

 

 

6.  객체 배열

 Circle 코드

public class Circle {
	int num;

	Circle(int num){
		this.num=num;
	}
}

 

▶ main 코드

		Circle[] cArray = new Circle[5]; //5개의 공간을 가짐
		for(int i=0;i<cArray.length;i++){
			cArray[i]= new Circle(i); //i 값으로 초기화
			System.out.println(cArray[i].radius);
		}

 

▶ 출력 결과

0
1
2
3
4

 

 

 

7. 심화 문제 풀이

 

[JAVA] 심화 문제 풀이

 

deliciouscode.tistory.com

 

 

 

 

 


2023년 5월 30일 화요일

<12일차 수업 후기>

동일한 패키지에 클래스를 생성하고, 객체를 생성하여 접근하는 실습을 했다. 예전에 애플리케이션을 만들 때 여러 개의 클래스를 만들고 접근했던 기억이 나서 재미있는 수업이었다.

728x90
반응형

+ Recent posts