객체(=Object)
- 사전적 의미 : 물건이나 어떠한 대상
- 프로그래밍에서의 객체 : 프로그램에서 표현하고자 하는 기능을 묶기위한 단위
객체를 구성하는 단위
- 객체를 이루는 것은 데이터와 기능이다.
- 데이터는변수로 표현됨.
- 객체안에 표한된 변수는 멤버변수 혹은 프로퍼티라 함.
- 기능은 메서드(=함수)로 표현함
클래스와 객체
객체를 생성하기 위해서는 객체의 설계도가 필요함
클래스(=Class)
객체의 설계도 역할을 하는 프로그램 소스
객체의 뼈대 라고 할 수 있다
클래스의 기본작성방법
class 클래스이름 {
멤버변수;
void 메서드이름( ) {
실행내용
}
}
- 'class' 라는 예약어와 클래스이름 명시 후 {~~}블록 구성.
- 멤버변수는 여러개 가능, 값을 선언과 동시에 할당가능.
- 메서드도 여러개 가능.
객체 생성방법
// 객체의 생성방법
클래스이름 객체이름;
// 예시
Glory gr;
// 객체의 할당
객체이름 = new 클래스이름();
// 예시
gr = new Glory();
// 선언과 할당의 통합
클래스이름 객체이름 = new 클래스이름();
// 예시
Glory gr = new Glory();
객체 사용
객체 안에 포함된 변수나 메서드는 점(.)으로 연결
// 객체안에 포함된 변수의 값을 다른변수에 복사
값 = 객체이름.멤버변수;
// 객체안에 포함된 변수의 값에 다른 값 대입
객체이름.멤버변수 = 값;
// 객체안에 포함된 메서드를 호출
객체이름.메서드이름();
// 객체안에 포함된 메서드에 파라미터 전달
객체이름.메서드이름(값1, 값2, ....);
멤버변수만 포함하고 있는 클래스의 작성 예
학생정보를 포함하는 클래스의 작성
class Student {
/* 멤버변수의 선언, 할당 */
// 문장을 표현 할 수 있는 변수형
String name = "자바학생";
int age = 19;
}
public class Main01 {
public static void main(String\[\] args) {
// 객체의 선언과 할당의 분리
Student std;
std = new Student();
// 객체의 생성 (일괄지정)
// Student std = new Student();
System.out.println("이름: " + std.name);
System.out.println("나이: " + std.age);
}
}
// 실행결과
이름: 자바학생
나이: 19
클래스를 정의하면서 멤버변수에 값을 직접 대입x.
class Charactor {
// 일반적으로는 멤버변수는 선언만 함.
String name;
int age;
}
public class Main02 {
public static void main(String[] args) {
// 하나의 클래스가 정의되면, 그 클래스의 구조를 기반으로 하는
// 여러개의 정보덩어리(=객체)를 생성할 수 있다.
Charactor d = new Charactor();
d.name = "둘리";
d.age = 19;
Charactor h = new Charactor();
h.name = "희동";
h.age = 3;
System.out.println("이름: " + d.name + ", 나이: " + d.age);
System.out.println("이름: " + h.name + ", 나이: " + h.age);
}
}
// 실행결과
이름: 둘리, 나이: 19
이름: 희동, 나이: 3
메서드를 포함한 클래스
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.sayHeIIo() ;
hello.setKor() ;
hello.sayHeIIo() ;
}
}
// 실행결과
Hello Java
안녕하세요. 자바
this : 자기 자신을 의미하는 키워드
- 클래스 안에서 this를 사용하여 "자기자신"을 표현
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 Main05 {
public static void main(String[] args) {
Member member = new Member();
member.setName("자바학생");
member.setAge(20);
member.say();
}
}
생성자
- new 키워드를 사용하여 객체가 생성될 때 자동으로 실행되는 특수한 형태의 메서드
- 'return' 명시하지 않으며 메서드의 이름은 클래스와 동일
- 자동으로 실행된다는 특성때문에, 객체가 생성되면서 해당 객체의 특성을 초기화 하기위해 사용.
생성자 활용
파라미터를 갖지않는 생성자
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 = new Book();
book.read();
}
}
// 실행결과
-------- 생성자 실행됨 -----------
------ read() 실행됨 --------
JAVA 입문
JAVA 어려움
파라미터를 갖는 생성자
class Article {
int seq; // 글번호
String subject; // 글 제목
String writer; // 작성자
public Article(int seq, String subject, String writer) {
this.seq = seq;
this.subject = subject;
this.writer = writer;
}
public void print() {
System.out.println(this.seq);
System.out.println(this.subject);
System.out.println(this.writer);
}
}
public class Main02 {
public static void main(String[] args) {
// 객체생성
Article article1 = new Article(1, "첫번째 글", "김아무개");
article1.print();
system.out.println("----------------");
Article article2 = new Article(2, "두번째 글", "이아무개");
article2.print();
}
}
// 실행결과
1
첫번째 글
김아무개
--------------
2
두번째 글
이아무개
'JAVA' 카테고리의 다른 글
JAVA(상속성, 다형성) (0) | 2020.06.09 |
---|---|
JAVA(자바빈즈(Java Beans), 은닉성, 상속성) (0) | 2020.06.09 |
JAVA(재귀함수) (0) | 2020.06.04 |
JAVA(값 복사 / 참조 복사) (0) | 2020.06.03 |
JAVA(메서드) (0) | 2020.06.03 |
댓글