반응형
/*
* 동물(Animal)에 해당하는 Animal 클래스 정의
* 1. 분석
* - 속성 : 이름(name, 문자열), 나이(age, 정수)
* - 기능 : 짖다(cry())
*/
/*
* 2. 설계 - 클래스 정의
* < 클래스 정의 기본 문법 >
* [접근제한자] class 클래스명 {
* // 멤버변수
* // 생성자
* // 메서드
* }
*/
//Animal클래스 정의
public class Animal {
//멤버변수 선언
String name;
int age;
//메서드 정의
// 짖다(cry()) : 매개변수도 없고, 리턴값도 없는 메서드
// => "동물 울음 소리!" 문자열 출력
public void cry() {
System.out.println("동물 울음소리!");
}
}
/*
* 자동차 클래스 정의
* 1. 구성요소(속성) - 멤버변수
* 1) 제조사(company, 문자열)
* 2) 모델명(modelName, 문자열)
* 3) 배기량(cc, 정수)
* 2. 동작(기능) - 메서드
* 1) 속력증가(speedUp()) - "자동차 속력 증가!" 출력
* 2) 속력감소(speedDown()) - "자동차 속력 감소!" 출력
*/
public class Car {
// 멤버변수 선언
String company;
String modelName;
int cc;
// 메서드 정의
public void speedUp() {
System.out.println("자동차 속력 증가!");
}
public void speedDown() {
System.out.println("자동차 속력 감소!");
}
}
public class Ex {
// main() 메서드는 자바 프로그램의 시작점이다!
// => main() 메서드에서부터 객체를 생성하고 사용할 수 있다!
// 단, main() 메서드에서만 가능한 것은 아니고
// main() 메서드가 호출하는 다른 메서드에서도 사용 가능
public static void main(String[] args) {
/*
* 정의한 클래스는 설계도에 해당하므로 실제 사용을 위해서는 반드시 실체(= 객체)를 생성해야한다! => 클래스를 사용하여 메모리에 생성된
* 객체를 인스턴스(Instance)라고 함
*
* < 클래스에 대한 인스턴스 생성 기본 문법 > 클래스명 변수명 = new 클래스명();
*
* < 인스턴스 접근 기본 문법(멤버변수 접근 및 메서드 호출) > 참조변수명.멤버변수 또는 참조변수명.메서드()
*/
// Animal 클래스의 인스턴스 생성 과정
// 1. Animal 클래스 타입 참조변수 선언
// Animal ani;
// 2. Animal 클래스 인스턴스 생성 및 주소값 저장
// ani = new Animal();
// 위의 두 문장을 한 문장으로 결합
Animal ani = new Animal();
// Animal 인스턴스에 접근하여 멤버변수 사용 및 메서드 호출
// => 인스턴스 접근을 위해서는 반드시 인스턴스 주소가 필요하며,
// 인스턴스 주소를 담고 있는 참조변수(ani)를 통해 접근이 가능함
// 1. Animal 인스턴스의 멤버변수 name 과 age 에 값 저장
// name = "멍멍이"; // 컴파일 에러 발생! 존재하지 않는 변수이므로 사용 불가
// => 반드시 참조변수명.멤버변수명 형태로 접근해야한다!
ani.name = "멍멍이"; // ani 인스턴스의 멤버변수 name 에 "멍멍이" 저장
System.out.println("이름 : " + ani.name);
ani.age = 3;
System.out.println("나이 : " + ani.age);
// 2. Animal 인스턴스의 메서드 cry() 호출
// => 리턴값이 없는 메서드이므로 메서드만 호출
// => 매개변수가 없는 메서드이므로 소괄호() 안에 아무것도 명시하지 않음
ani.cry();
System.out.println("--------------------");
// Animal 클래스의 두번째 인스턴스(ani2) 생성
// => 멤버변수 초기화 - 이름 : 야옹이, 나이 : 2
// => cry() 메서드 호출
Animal ani2 = new Animal();
ani2.name = "야옹이";
ani2.age = 2;
System.out.println("이름 : " + ani2.name);
System.out.println("나이 : " + ani2.age);
ani2.cry();
// ---------------------------------------------------
// 위의 두 인스턴스(ani, ani2) 구조
// ---------------------------------------------------
// new
// Animal 클래스 => 인스턴스1(ani) 인스턴스2(ani2)
// 이름(name) "멍멍이" "야옹이"
// 나이(age) 3 2
// ---------------------------------------------------
System.out.println("========================================");
// Car 클래스의 인스턴스(car) 생성 및 멤버변수 초기화 후 출력
// 제조사 : 현대
// 모델명 : 그랜져
// 배기량 : 3000
Car car = new Car();
// => Heap 공간에 생성된 인스턴스 주소가 참조변수 car 에 저장
car.company = "현대";
car.modelName = "그랜져";
car.cc = 3000;
System.out.println("제조사 : " + car.company);
System.out.println("모델명 : " + car.modelName);
System.out.println("배기량 : " + car.cc);
// speedUp(), speedDown() 메서드 호출
car.speedUp();
car.speedDown();
System.out.println("===========================");
// Student 클래스 인스턴스 생성
// - 이름 : "홍길동", 번호 : 1, 과정명 : "프레임워크기반자바개발자"
// - study() 메서드를 호출하여 "JAVA" 문자열 전달
// rest() 메서드 호출
Student s1 = new Student();
s1.name = "홍길동";
s1.id = 1;
s1.className = "프레임워크기반자바개발자";
System.out.println("이름 : " + s1.name);
System.out.println("번호 : " + s1.id);
System.out.println("과정명 : " + s1.className);
System.out.println("-----------");
// Student 클래스 인스턴스2 생성
// 자신의 이름, 번호, 과정명 저장 후 출력, 메서드 호출
Student s2 = new Student();
s2.name = "이순신";
s2.id = 2;
s2.className = "웹기반안드로이드개발자";
System.out.println("이름 : " + s2.name);
System.out.println("번호 : " + s2.id);
System.out.println("과정명 : " + s2.className);
} // main() 메서드 끝
} // Ex 클래스 끝
// 하나의 java 파일 내에 여러개의 클래스를 정의할 수 있다!
// => 단! 파일명과 동일한 이름의 클래스 외에는 public 키워드를 붙일 수 없다!
// 학생(Student) 클래스 정의
// 속성 : 이름(name, 문자열), 번호(id, 정수), 과정명(className, 문자열)
// 메서드
// 1) 공부(study()) - 리턴값 없음, 매개변수 - 과목명(subjectName, 문자열)
// => "XXX 과목 공부!" 출력
// 2) 휴식(rest()) - 리턴값 없음, 매개변수 없음 => "휴식!" 출력
class Student {
// 멤버변수 선언
String name;
int id;
String className;
// 메서드 정의
public void study(String subjectName) {
// 전달받은 파라미터 값을 사용하여 출력
System.out.println(subjectName + " 과목 공부!");
}
public void rest() {
System.out.println("휴식!");
}
}
/*
이름 : 멍멍이
나이 : 3
동물 울음소리!
-------------------------------
이름 : 야옹이
나이 : 2
동물 울음소리!
-------------------------------
제조사 : 현대
모델명 : 그랜저
배기량 : 3000
자동차 속력 증가!
자동차 속력 감소!
-------------------------------
이름 : 홍길동
번호 : 1
과정명 : 프레임워크 자바 기반 개발자
JAVA 과목 공부!
휴식!
-------------------------------
이름 : 이순신
번호 : 2
과정명 : 웹기반 안드로이드 개발자
CSS 과목 공부!
휴식!
*/
public class Test {
public static void main(String[] args) {
/*
* Account 인스턴스(acc) 생성 후 다음과 같이 초기화 및 출력
* ---------------------------------------
* 계좌번호 : 111-1111-111
* 예금주명 : 홍길동
* 현재잔고 : 10000원
*/
Account acc = new Account();
acc.accountNo = "111-1111-111";
acc.ownerName="홍길동";
acc.balance = 10000;
System.out.println("계좌번호 : " + acc.accountNo);
System.out.println("예금주명 : " + acc.ownerName);
System.out.println("현재잔고 : " + acc.balance + "원");
System.out.println("---------------------------------");
Account acc2 = new Account();
acc2.accountNo="123-4567-891";
acc2.ownerName="김철수";
acc2.balance= 5000;
System.out.println("계좌번호 : " + acc2.accountNo);
System.out.println("예금주명 : " + acc2.ownerName);
System.out.println("현재잔고 : " + acc2.balance + "원");
}// main() 메서드 끝
} // Test 클래스 끝
/*
* 은행계좌(Account) 클래스 정의
* 멤버변수 - 계좌번호(accountNo, 문자열) => "111-1111-111"
* 예금주명(ownerName, 문자열) => "홍길동"
* 현재잔고(balance, 정수) => 10000
*/
class Account{
String accountNo;
String ownerName;
int balance;
}
/*
계좌번호 : 111-1111-111
예금주명 : 홍길동
현재잔고 : 10000원
---------------------------------
계좌번호 : 123-4567-891
예금주명 : 김철수
현재잔고 : 5000원
*/
import java.awt.print.Printable;
public class Ex2 {
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "김춘추";
p1.age = 27;
p1.print();
Person p2 = new Person();
p2.name = "김유신";
p2.age = 24;
p2.print();
}
}
//사람(Person) 클래스 정의
class Person{
// 멤버변수 선언
String name;
int age;
// 메서드 정의
// 자신의 인스턴스에 저장된 이름, 나이를 출력하는 print() 메서드 정의
// => 매개변수 없음, 리턴값 없음
public void print() {
// 클래스 내의 메서드에서 자신의 클래스 멤버변수에 자유롭게 접근 가능
// => 즉, 변수명만으로 메모리에 생성된 자신의 인스턴스 내의
// 멤버변수 값을 사용할 수 있다!
// => 단, 동일한 코드라 하더라도 인스턴스에 따라 저장된 값은 달라짐
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
}
}
public class Test2 {
public static void main(String[] args) {
Account2 acc2 = new Account2();
acc2.accountNo = "111-1111-111";
acc2.ownerName = "홍길동";
acc2.balance = 10000;
acc2.showAccountInfo();
}
}
/*
* 은행계좌(Account2) 클래스 정의
* 멤버변수 - 계좌번호(accountNo, 문자열) => "111-1111-111"
* 예금주명(ownerName, 문자열) => "홍길동"
* 현재잔고(balance, 정수) => 10000
* 메서드
* - showAccountInfo() => 리턴값 없음, 매개변수 없음
* => 계좌번호, 예금주명, 현재잔고를 출력하는 메서드 정의
* ex) 계좌번호 : 111-1111-111
* 예금주명 : 홍길동
* 현재잔고 : 10000원
*/
class Account2{
String accountNo;
String ownerName;
int balance;
public void showAccountInfo() {
System.out.println("계좌번호 : " + accountNo);
System.out.println("예금주명 : " + ownerName);
System.out.println("현재잔고 : " + balance);
}
}
/*
계좌번호 : 111-1111-111
예금주명 : 홍길동
현재잔고 : 10000
*/
반응형
'JAVA' 카테고리의 다른 글
[Java] 접근제한자 (0) | 2021.10.28 |
---|---|
[Java] Class 연습 (0) | 2021.10.28 |
[Java] 객체지향(Method) (0) | 2021.10.28 |
[Java] 배열 테스트 문제 (0) | 2021.10.28 |
[Java] 배열(Array) (0) | 2021.10.26 |