객체지향 언어
특징
코드의 재사용성이 높다
코드의 관리가 용이하다 (객체간의 관계, 유지보수)
신뢰성 높은 프로그래밍이 가능 (데이터 보호, 코드의 중복을 줄임)
클래스와 객체
클래스 객체를 정의해 놓은 설계도라고 생각하면 된다
사전적인 의미에서는 실제로 존재하는 사물이나 개념을 뜻하며
프로그래밍에서는 속성과 기능을 묶어놓은 것을 객체(인스턴스)라 한다
속성은 멤버변수 (필드), 기능은 메서드(함수)라 한다
클래스 작성하기
Hello2.java
public class Hello2 {}
class Hello3 {}
//public 클래스는 하나만 존재해야하며 있을 경우 소스 파일의 이름과 동일해야 한다
객체 생성하고 사용하기
객체를 생성해야 해당 클래스의 필드와 메서드를 사용할 수 있다
클래스명 참조변수명 = new 클래스명();
메서드 사용 시 참조변수명.메서드명(매개변수);
객체배열
많은 수의 객체를 다뤄야할 때 배열로 다룰 수 있다
Tv[] tvArr = new Tv[3]; //길이가 3인 객체 배열 생성
tvArr[0] = new Tv(); //각 인덱스에 객체 생성해서 참조
tvArr[1] = new Tv();
tvArr[2] = new Tv();
for문 사용 시
for(int i = 0; i < tvArr.length; i++){
tvArr[i] = new Tv();
}
선언위치에 따른 변수의 종류
변수 종류 | 선언 위치 | 생성 시기 |
클래스 변수 (static) | 클래스 영역 | 클래스가 메모리에 올라갈 때 |
인스턴스 변수 | 클래스 영역 | 인스턴스 생성 시 |
지역변수 | 메서드, 생성자, 초기화 블럭 | 변수 선언문 실행 시 |
클래스 설계 시 공통적인 속성은 static으로, 개별 속성은 인스턴스 속성으로 설정하도록 하자
클래스 변수와 인스턴스 변수 예제
class Ex {
public static void main(String[] args){
System.out.println("Card.width = " + Card.width); //static 변수는 객체 생성 없이 사용
System.out.println("Card.height = " + Card.height);
Card c1 = new Card();
c1.kind = "Heart";
c1.number = 7;
Card c2 = new Card();
c2.kind = "Spade";
c2.number = 4;
System.out.println("c1은 "+ c1.kind + "," + c1.number + "이며 크기는 " + c1.width + ","
+ c1.height); //heart, 7, 100, 250
System.out.println("c2은 "+ c2.kind + "," + c2.number + "이며 크기는 " + c2.width + ","
+ c2.height); // spade, 4, 100, 250
c1.width = 50; //static 변수는 저장공간이 하나이므로 변경하면 다른 객체에서도 변경됨
c1.width = 80; // c2에서도 50, 80으로 표시된다
class Card {
String kind;
int number;
static int width = 100;
static int height = 250;
}
메서드
함수, 기능을 하는 문장이다
반환타입 메서드명 (매개변수) { //선언부
구현하고 싶은 기능 //구현부
} (반환타입은 반횐값이 없을 경우 void로 적는다)
메서드내에 선언된 변수들은 지역변수라 한다, 지역변수는 메서드 실행이 종료되면 사라진다
class Ex{
public static void main(String[] args){
MyMath mm = new MyMath();
long result1 = mm.add(5L, 3L); //객체를 생성하고 참조변수.메서드명으로 호출 (괄호안은 매개변수)
System.out.println("add(5L, 3L) = "+ result1);
}
}
class MyMath {
long add(long a, long b){
long result = a + b;
return result; //반환타입과 return의 타입은 같은 타입 또는 자동 형변환이 가능한 타입
}
}
return 문
현재 실행중인 메서드를 종료하고 호출한 시점으로 돌아간다 (리턴값이 있으면 호출지점에 해당 값을 전달한다)
int multiply(int x, int y){
int result = x*y;
return result;
} //반환타입이 void면 return문 생략 가능
int max(int a, int b){
if(a > b)
return a; //참과 거짓 두가지 경우 모두 반환값이 있어야 한다
else
return b;
}
-자바의 정석 기초편 책으로 공부하였습니다
-객체 지향 파트는 더 꼼꼼히 복습하자!
반응형
'IT 기초 > JAVA' 카테고리의 다른 글
[java 정리] 객체지향 프로그래밍II (1) (0) | 2022.07.26 |
---|---|
[java 정리] 객체지향 프로그래밍I (3) (0) | 2022.07.26 |
[java 정리] 객체지향 프로그래밍I (2) (0) | 2022.07.02 |
[java 정리] 변수, 상수, 리터럴, Scanner (0) | 2022.06.28 |
[java 정리] 출력문 (0) | 2022.06.28 |
댓글