티스토리 뷰
↔ 절차 지향 프로그래밍
순서에 맞추어 단계적으로 실행되도록 명령어 나열. 기능 중심.
1. 객체 지향
-객체 : 눈에 보이는 사물. 눈에 보이지 않는 것도 객체가 될 수 있음.
-객체 지향 프로그래밍 : 객체 구성하고 객체 단위로 프로그래밍(필드, 메소드)
-객체를 정의, 각 객체가 어떤 기능을 제공하고 객체 간 협력(상호작용)을 어떻게 구현할 것인지. 함수를 통해 구현.
-객체 지향 요소
아래의 것들을 가지고 객체를 만듦.
클래스 | 인터페이스 | |
(일반) 클래스 | 추상 클래스 | 내부에 추상함수를 만들어서 인터페이스를 사용(상속)하는 |
객체 못 만듦. 상속받아서 만들 수 있음(?) |
2. 클래스
객체를 만들기 위한 객체의 형(자료형)
객체의 속성(Property), 기능(Method)를 코드로 구현. 객체의 특성, 기능을 요약해놓은 것이 클래스.
(1) 개념 및 기본 구조
-변수 : 각각 선언
int score1 = 80;
int score2 = 70;
int score3 = 92;
...
double avg = 78.2;
-배열 : 연속된 같은 자료형을 한꺼번에
int[] scores = {80, 70, 92, ...};
double avg = 78.2;
-구조체 : 서로 다른 변수 묶음. 메소드(함수) 포함 가능. but 상속 불가
struct Score{
int[] scores = {80, 70, 92, ...};
double avg = 78.2;
}
-클래스
class Score{
int[] scores = {80, 70, 92, ...};
double avg = 78.2;
void printAvg(){
//실행문
}
}
(2) 클래스 구조
-외부 : package, import, 외부 클래스(external class)
-내부 : field 변수, 메소드(멤버), 생성자, 내부 클래스(멤버)
package
import
class
public class A {
//클래스 내부
필드(멤버 변수) // ↔지역변수 : 메소드 내부
메소드
생성자 // AClass ac = new AClass(); default 생성자 호출
// Aclass ab = new Aclass(1, "java"); 매개변수로 정수, 문자열 받는 생성자 호출
이너 클래스(내부 클래스)
}
필드 | 메소드 | 생성자 | 내부 클래스 |
클래스 소속 변수 클래스 특징(속성) |
클래스 기능 (함수 같은 것) |
객체 생성 시 호출 생성자 이름 == 클래스 이름 |
클래스 내부에 정의된 클래스 |
_예시) 생성자 클래스, 객체 생성하고 호출하는 클래스
package teata;
public class AClass { //생성자 AClass
public AClass() { //디폴트 생성자
}
public AClass(int a, String str) { //정수와 문자열을 받아 실행하는 생성자
System.out.println(a);
System.out.println(str);
}
public void func() { //메소드
System.out.println("AClass");
}
}
package test0126;
import java.util.Scanner; // 1.java.lang이 아닌 것을 사용할 때 import
import teata.AClass; // 2.다른 패키지에 만든 클래스 임포트
class TestB{ // 3.현재 클래스에서 새로운 클래스 만듦.
void func() {
System.out.println("TestB");
}
}
public class ArrayTest01 {
static void sum(int[] a, int[] b) { // 배열의 주소값 가져옴
for(int i=0; i<a.length; i++) {
a[i] += b[i]; // a[i] = a[i] + b[i];
System.out.print(a[i]+" ");
}
}
public static void main(String[] args) {
AClass ac = new AClass(); //2. AClass 생성자의 디폴트 객체 생성
ac.func(); //함수 호출
AClass ab = new AClass(1, "java"); //2.
Scanner sc = new Scanner(System.in); //1.
}
}
(3) 클래스(Class), 객체(Object), 인스턴스(Instance)
클래스 | 인스턴스 | 객체 |
객체를 만들기 위한 객체의 형 객체의 속성, 기능(메소드) |
클래스가 메모리에 생성된 상태 | 클래스들이 실체화된 것. 생성된 클래스의 인스턴스 (실체화 : heap 메모리에 공간 할당) |
-인스턴스화 : new 이용. 객체 생성.
-객체 생성 코드
A | a | = | new | A(); |
class | 참조 변수 A의 주소 |
Heap에 저장되는 실제 객체 생성 |
_예제) Car, CarTest
package test0126;
public class CarTest {
public static void main(String[] args) {
// 객체 2개 생성. c1, c2
Car c1 = new Car("Red", 2021); // 2번
Car c2 = new Car("black", 2020);
c1.display(); // 3.메서드 호출
System.out.println();
c2.display();
Car c3 = new Car();
c3.color = "blue";
c3.year = 2022; //생성할 때 넣지 않고 나중에 넣음.
c3.display();
System.out.println();
//Car c4;
//c4.color = "Yellow";
//변수만 선언하고 실제 객체 안 만들어진 상태인데 객체 접근하는 거라 오류.
//객체 생성해야 데이터를 넣을 수 있음.
Car c4 = new Car();
c4.color = "white";
c4.year = 2019;
//객체 생성 : heap 영역에 메모리 생성. 값? 들어가는 것.
}
}
└Java는 Heap 메모리에 직접 접근 불가. 참조변수를 통해 접근 가능.
참조변수명.필드명 | 참조변수명.메소드명 해당번지 위치의 Heap 메모리로 이동.
package test0126;
public class Car { //Car Class
String color; //멤버 변수
int year;
//생성자
public Car() { //1.default 생성자
}
public Car(String c, int y ) { //2.문자열과 정수를 받는 생성자
color = c;
year = y;
}
public void display() { //3.함수 display : color, year 출력하는
System.out.println(color);
System.out.println(year);
}
}
(4) 클래스 메모리 구조
class 영역 static 영역 final 영역 Method 영역 Instance 영역 |
Stack | Heap |
변수 공간이 만들어지는 곳. 실제 배열 값이 들어있는 주소 저장. |
실제 배열 값 저장되는 곳 | |
초기화하지 않으면 기본값 없고 출력 불가 |
자료형마다 기본값 존재. |
end
'수업 > └Java' 카테고리의 다른 글
[CH06_3]클래스 외부 구성 요소 (0) | 2022.01.31 |
---|---|
[CH06_2]클래스 내부 구성 요소 (0) | 2022.01.31 |
[CH05_2]참조 자료형 : String (0) | 2022.01.31 |
[CH05_1]참조 자료형 : 배열(Array) (0) | 2022.01.31 |
[CH04_02]제어문 : 반복문 (0) | 2022.01.30 |
- Total
- Today
- Yesterday
- improt
- 미디어 태그
- html pre
- JavaScript
- CascadingStyleSheet
- input type 종류
- BAEKJOON
- html layout
- 변수
- 스크립태그
- text formatting
- border-spacing
- html atrribute
- selcetor
- css
- Java
- empty-cell
- 입력양식
- 외부구성요소
- A%B
- 기본선택자
- scanner
- initialized
- html base tag
- html
- html input type
- caption-side
- typeof
- ScriptTag
- html a tag
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |