클래스 안에 새로운 메소드 만들어서 호출하기
public class HelloWorld {
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
for (int i = 0; i < 10; i++) {
helloWorld.hello();
}
}
public void hello(){
System.out.println("Hello ~");
}
}
신규 클래스 선언 및 클래스 내부 설정
class Cat {
// 클래스 안에 필요한 3가지
// 속성 : 변수
String name; // 초기화를 하지 않음
int aggressive = 50;
// 생성자 : 인스턴스를 생성할 때 사용하는 메소드
public Cat(String name) {
this.name = name;
}
// 기능 : 메소드
public void stroke(int count) {
if (aggressive > 60) {
System.out.println("공격력이 : " + aggressive + " 입니다.");
System.out.println("당신의 손을 할큅니다.");
} else {
System.out.println(count + " 회 만졌습니다.");
System.out.println("공격력이 1 올라갑니다.");
System.out.println("공격력 : " + aggressive++);
}
}
public void sleep() {
System.out.println(name + " (이)가 잠을 잡니다.");
}
public int add(int num1, int num2) {
return num1 + num2;
}
}
public class CM01 {
public static void main(String[] args) {
Cat cat1 = new Cat("헤롱이");
Cat cat2 = new Cat("메롱이");
Cat cat3 = new Cat("야옹이");
Cat[] cats = new Cat[3];
cats[0] = cat1;
cats[1] = cat2;
cats[2] = cat3;
for (Cat c : cats) {
c.sleep();
}
for (int i = 0; i < cats.length; i++) {
cats[i].sleep();
}
for (int i = 0; i < 15; i++) {
cat1.stroke(1);
}
int result = cat3.add(10,20); // add 메소드 호출하여 리턴값을 받음
System.out.println(result);
}
}
프로그래밍의 유명한 격언 - 바퀴를 다시 발명하지 마라
클래스 안에 생성자 여러 개 만들기
class Human { // 클래스는 절대 겹치지 않게, 메소드나 클래스 내부에 생성 X
// 속성 = 변수
String name;
int age;
String address;
// 생성자
public Human(String name, int age) { // 생성자는 리턴 타입이 없음
this.name = name; // 입력받은 name 을 변수 name 에 집어넣음
this.age = age;
}
public Human(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
}
public class Oop2 {
public static void main(String[] args) {
Human h1 = new Human("이름", 1);
System.out.println(h1); // dec14.oop.Human@1e643faf
System.out.println(h1.name); // 이름
System.out.println(h1.age); // 1
Human h2 = new Human("홍길동", 5, "고양시");
System.out.println(h2.name); // 홍길동
System.out.println(h2.age); // 5
System.out.println(h2.address); // 고양시
Human h3 = new Human(null, 0, null); // 변수 별 초기값으로 넣어도 생성 가능-
}
}
정보처리기사 출제 문제
class Conv {
int a; // 필드
public Conv(int a) { // 생성자
this.a = a;
}
int func() { // 메소드
int b = 1;
for (int i = 1; i < a; i++) {
b = a * i + b; // i = 1 : 6, i = 2 : 16, i = 3 : 31, i = 4 : 51
}
return a + b; // 5 + 51
}
}
public class Test01 {
public static void main(String[] args) {
Conv conv = new Conv(3); // Conv 클래스 conv 객체 생성
conv.a = 5; // conv 의 a 값을 5 로 수정
int b = conv.func(); // 56
System.out.println(conv.a + b); // 5 + 56 = 61
}
}
정보처리기사 기출
class A {
int a;
int b;
}
public class Test02 {
static void func1(A m) {
m.a *= 10;
}
static void func2(A m) {
m.a += m.b;
}
public static void main(String[] args) {
A m = new A(); // 객체 생성 시 입력 값 없음
m.a = 100; // a 값을 100 으로 수정
func1(m); // func1 연산 수행, m.a = m.a * 10; -> 1000
m.b = m.a; // m.b 에 1000 대입
func2(m); // func2 연산 수행, m.a = 1000 + 1000; -> 2000
System.out.printf("%d", m.a); // 2000
}
}
public 이 붙은 다른 클래스를 이용하여 객체 생성하기
기존 다른 클래스 파일을 생성하여 만들어 둔 클래스
package dec14.oop;
public class Oop03 {
int num = 10;
public String toString() {
String text = "저는 dec14.opp 에 있는 Oop03 입니다.";
return text;
}
}
위 명령을 이용하여 만든 다른 객체
package dec14;
import dec14.oop.Oop03; // public 이 붙으면 패키지와 상관없이 사용 가능
public class Oop1 {
public static void main(String[] args) {
Human h1 = new Human("홍길동", 1);
Cat cat = new Cat("야옹이");
int result = cat.add(10,20);
System.out.println(result); // 30
Oop03 oop03 = new Oop03();
String s = oop03.toString();
System.out.println(s); // 저는 dec14.opp 에 있는 Oop03 입니다.
}
}
'JAVA' 카테고리의 다른 글
231218 Java (0) | 2023.12.18 |
---|---|
231215 Java 객체지향 (0) | 2023.12.15 |
231213 Java (0) | 2023.12.13 |
231212 Java (0) | 2023.12.12 |
231211 Java (2) | 2023.12.11 |