반응형
객체지향
package jun01;
//객체지향
public class OOP01 {
int number = 90;
// 3 변수 선언 = 인스턴스 변수 == 멤버변수, 멤버 필드
// 클래스 바디에 생성
// 초기화하지 않아도 자바가 알아서 해줌
// 클래스에서 사용하기 위해서 생성
public static void main(String[] args) {
//3 Code : 변수 선언문 = 인스턴스 변수
int app = 0;
System.out.println(app); //0
OOP01 oop01 = new OOP01();
oop01.print2();// 점 = 소유
System.out.println(oop01.number); //90
oop01.number = 1000;
System.out.println(oop01.number); //1000
oop01.print2(); //print2
System.out.println(oop01.print3()); //0
System.out.println(oop01.print4()); //Hello
System.out.println(oop01.print5()); // 3.14
Apple apple = new Apple();
apple.print(); //Apple
//다른 메소드를 실행시키기 위해서 호출
}
//2 M - Code
void print2() {
System.out.println("print2");
}
int print3() {
return 0;
}
String print4() {
return "Hello";
}
double print5() {
return 3.14;
}
}
//1 Class = M - Code
// 클래스 생성, 메소드생성, 코드
class Apple{//class
public void print() {
System.out.println("Apple"); //code
}
}
- 절차지향은 하나의 로직을 순서대로 진행하여 처리
- 객체지향은 객체의 호출 순서에 영향을 받는다.
객체를 만들어서 순서에 연연하지 않고 자주 쓰거나필요한 부분은 따로 정의 하여 모듈화 하는 등의 장점을 가진 방법
객체 = 현실에 존재하는 사물들
클래스 = 객체를 컴퓨터에서 구현하기 위해서 필요한 설계도 같은 개념
인스턴스 = 메모리 상에 만들어진 객체
메소드 = 클래스 속에 존재 어떤 기능을 수행하는 명령문장들
class NoteBook{
String game;
String power;
int memory = 1024;
void runGame() {
System.out.println(game + "을 실행합니다.");
}
void power(String stats) { //가상 변수
System.out.println("노트북 : " + stats);
}
int addMemory(int memory) { // 지역 가상 변수
memory += this.memory; // 인스턴스 변수
return memory;
}
}
public class OOP02 {
public static void main(String[] args) {
//클래스에서 인스턴스 생성하기
NoteBook nt = new NoteBook();
nt.power("On"); //노트북 : On
nt.game = "diablo4";
nt.runGame(); //diablo4을 실행합니다.
int result = nt.addMemory(1024);
System.out.println("1024를 추가하면 " + result + "가 됩니다."); //1024를 추가하면 2048가 됩니다.
NoteBook ss = new NoteBook();
nt.memory += 2048;
System.out.println(nt.memory); //3072
System.out.println(ss.memory); //1024
System.out.println(ss.game); //null
}
}
객체와 인스턴스
클래스에 의해서 생성된 객체를 인스턴스라고 한다.
객체와 인스턴스의 차이는?
Animal a1 = new Animal(); 로 생성된 a1은 객체
a1 객체는 Animal의 인스턴스(istance)
즉 인스턴스라는 말은 특정 객체가 어떤 클래스의 객체인지를 관계위주로 설명할때 사용
즉, "a1은 인스턴스"보다는 'a1은 Animal의 인스턴스' 라는 표현이 더 잘어울린다.
클래스와 인스턴스
과자를 만드는 과자틀과 만들어진 과자
과자틀 -> 클래스
과자 -> 객체 - 인스턴스
Animal a1 = new Animal();
Animal a2 = new Animal();
Animal a3 = new Animal();
Animal a4 = new Animal();
Animal a5 = new Animal();
Animal a6 = new Animal();
class Animal{
String name; //참조형의 기본값 null
int a; //정수형의 기본값 0
double d; //실수형의 기본값 0.0
char c; //문자형의 기본값 0
boolean t; //논리형의 기본값 false
//null
// name을 실행하면 null
// null이라는 것은 값이 할당되지 않은 상태
// Animal이라는 클래스의 인스턴스 변수로 name을 추가하였지만
// 아무런 값도 대입하지 않았기 때문에 null이라는 값 출력
//메소드
public void setName(String name) { //저장
this.name = name;
}
public String getName() { //값 불러오기
return this.name;
}
}
class Apple2{
//인스턴스 변수
// 메소드
}
/* 위 Apple2 클래스는 가장 간단한 클래스
클래스 선언만 있고 내용이 없는 껍데기 클래스
인스턴스 생성 가능
*/
public class OOP03 {
public static void main(String[] args) {
Animal r2d2 = new Animal();
//r2d2.name = "R2D2";
Animal cat = new Animal();
cat.name = "동수";
Animal dog = new Animal();
dog.name = "3PO";
System.out.println(r2d2.name); //null
System.out.println(r2d2.a); //0
System.out.println(r2d2.d); //0.0
System.out.println(r2d2.c); //0
System.out.println(r2d2.t); //false
System.out.println(cat.name); //동수
System.out.println(dog.name); //3PO
cat.setName("동수set"); //set
System.out.println(cat.getName()); //동수set
}
}
반응형
'프로그래밍 > Java 공부' 카테고리의 다른 글
인스턴스 멤버, 생성자(Constructor), 정적 멤버(static) (0) | 2021.06.03 |
---|---|
객체지향프로그래밍_OOP, 자바 파라미터에 클래스 전달 (0) | 2021.06.02 |
데이터 포맷, 텍스트 포맷, 동적가변배열, 배열 복사 (0) | 2021.05.31 |
이차원 배열, 성적 입력 프로그램, 모스부호 해독 (0) | 2021.05.27 |
배열, 이차원 배열 (0) | 2021.05.26 |