: 객체가 중심이 되는 프로그래밍 기법
: 객체의 설계도 역할을 하는 프로그램 소스
class 클래스 이름 {
멤버 변수;
void 메서드 이름() {
...
}
}
객체이름.멤버변수;
std1.name;
std1.age;
std2.name;
String username = 객체이름. 멤버변수;
std1.name;
-> 객체 안에 포함된 변수의 값에 따른 값을 대입하는 경우
객체이름.멤버변수 = 값;
std1.name = "김자바";
-> 객체 안에 포함된 메서드 호출
객체이름.메서드이름();
-> 객체 안에 포함된 메서드에 파라미터 전달
객체이름.메서드이름(값1, 값2, ...);
!! 중요 !!
1. 생성자란?
Memeber m = new Member();
class Member {
Member() {
}
}
package classobject;
class Student {
// 멤버 변수 선언 + 할당
String name = "자바학생";
int age = 19;
}
public class Main01 {
public static void main(String[] args) {
// 객체의 선언과 할당 분리
Student std1;
std1 = new Student();
// 객체의 생성 일괄 지정
Student std2 = new Student();
System.out.println("std1 이름 : " + std1.name);
System.out.println("std1 나이 : " + std1.age);
System.out.println("std2 이름 : " + std2.name);
System.out.println("std2 나이 : " + std2.age);
// std1 객체의 name과 age 멤버 변수를 임의의 값으로 변경
// std1 name과 age, std2 name과 age를 각각 출력
std1.name = "한서진";
std1.age = 23;
System.out.println("std1 이름 : " + std1.name);
System.out.println("std1 나이 : " + std1.age);
System.out.println("std2 이름 : " + std2.name);
System.out.println("std2 나이 : " + std2.age);
}
}
package classobject;
class Character {
String name;
String job;
int age;
}
public class Main02 {
public static void main(String[] args) {
Character char1 = new Character();
char1.name = "둘리";
char1.job = "공룡";
char1.age = 150;
Character char2 = new Character();
char2.name = "희동이";
char2.job = "아기";
char2.age = 3;
System.out.println("char1 이름 : " + char1.name + ", 직업 : " + char1.job + ", 나이 : " + char1.age);
System.out.println("char2 이름 : " + char2.name + ", 직업 : " + char2.job + ", 나이 : " + char2.age);
}
}
package classobject;
class HelloWorld {
String message;
void sayHello() {
System.out.println(message);
}
void setEng() {
message = "Hello Java";
}
void setKor() {
message = "안녕하세요. 자바";
}
}
public class Main03 {
public static void main(String[] args) {
HelloWorld hello = new HelloWorld();
hello.setEng();
hello.sayHello();
hello.sayHello();
hello.setKor();
hello.sayHello();
}
}
package classobject;
class Calc {
int plus(int x, int y) {
return x + y;
}
}
public class Main04 {
public static void main(String[] args) {
Calc calc1 = new Calc();
int result = calc1.plus(100, 50);
System.out.println("100 +50=" + result);
// Calc calc2 = new Calc();
// System.out.println(calc2.plus(100, 200));
System.out.println(calc1.plus(100, 200));
}
}
package classobject;
class Calculator {
int plus(int x, int y) { return x + y;
}
int minus(int x, int y) { return x - y;
}
int times(int x, int y) { return x * y;
}
int divide(int x, int y) {
int result = 0;
if ( y !=0 ) {
result = x / y;
}
return result;
}
}
public class Main05 {
public static void main(String[] args) {
Calculator c = new Calculator();
int result = c.plus(100, 50);
System.out.println("100 + 50 = " + result);
System.out.println("100 - 50 = " + c.minus(100, 50));
System.out.println("100 * 50 = " + c.times(100, 50));
System.out.println("100 / 50 = " + c.divide(100, 50));
}
}
package classobject;
class Member {
String name;
int age;
String getName() {
return this.name;
}
void setName (String name) {
this.name = name;
}
int getAge() {
return this.age;
}
void setAge(int age) {
this.age = age;
}
void say() {
System.out.println(this.getName());
System.out.println(this.getAge());
}
}
public class Main06 {
public static void main(String[] args) {
Member m = new Member();
m.setName("자바학생");
m.setAge(20);
m.say();
}
}
package classobject;
class Book {
String subject;
String content;
// 생성자 : 객체가 생성될 때, 자동으로 실행되는 특수한 메서드
// 특징 : 리턴형을 명시하지 않고, 클래스와 이름이 동일
Book() {
System.out.println("---생성자 실햄됨---");
this.subject = "JAVA 입문";
this.content = "JAVA는 객체 지향 언어이다";
}
void read() {
System.out.println("---read() 실행됨---");
System.out.println(this.subject);
System.out.println(this.content);
}
}
public class Main01 {
public static void main(String[] args) {
// Book 클래스의 생성자에서 멤버 변수에 대한 기본값을 설정하기 때문에,
// 객체를 생성하는 것만으로 멤버 변수가 초기화
Book book = new Book();
book.read();
}
}
package classobject;
class User {
String name;
int age;
User(String name, int age) {
// 생성자 파라미터의 값을 멤버 변수에 할당
this.name = name;
this.age = age;
}
}
public class Main02 {
public static void main(String[] args) {
// 생성자에 파라미터가 정의된 경우 객체 생성 구문에서 해당 파라미터를 전달해야 함.
//객체를 생성하면서 설한 파라미터는 생성자를 통해 멤버 변수에 저장
User user = new User("자바학생", 25);
}
}
package classobject;
class Article {
int seq; // 글 번호
String subject; // 글 제목
String writer; //작성자
// 1. 생성자 생성, seq, subject, writer 멤버 변수의 값에 값을 할당하는 파라미터를 가진 생성자를 만들 것,
Article (int seq, String subject, String writer) {
this.seq = seq;
this.subject = subject;
this.writer = writer;
}
// 2. print(), void, seq, subiect, writer를 각각 출력
void print() {
System.out.println(this.seq);
System.out.println(this.subject);
System.out.println(this.writer);
}
}
public class Main03 {
public static void main(String[] args) {
// 3. Article class로 객체 생성
Article article1 = new Article(1, "자바 주제1", "자바학생");
// 4. print() 호출
article1.print();
System.out.println("----------");
// 5. Article class로 객체2 생성
Article article2 = new Article(2, "자바 주제2", "홍길동");
// 6. 객체2.print()
article2.print();
}
}