정규식 정규식, 정규식, 정규식
미리 정의된 문자 클래스
String( ) 매개변수 main() 메서드 목적
객체 지향 프로그래밍
: 부품에 해당하는 객체를 생성한 후 이들 객체를 하나씩 조립하여 완전한 프로그램을 만드는 기술
목적무엇인가요
개체 = 데이터(필드) + 메서드
(속성 -> 필드, 작업 -> 메서드)
개체 및 클래스
– 개체를 만들 때 청사진은 무엇에 해당합니까? 수업
– 이 클래스의 클래스에서 생성된 객체 예
– 클래스에서 객체를 생성하는 과정 -> 인스턴스화
– 동일한 클래스의 여러 인스턴스 생성 가능
클래스 선언
: 클래스 선언은 객체 생성 청사진을 생성하는 방법입니다.
– 클래스 선언은 소스 파일과 동일한 이름을 가집니다.
//클래스 선언
public class 클래스명 {
}
– public 클래스 -> public 클래스 선언(패키지 상관없이 어디서나 사용 가능)
– 클래스 이름은 보통 UpperCamelCase로 첫글자를 씁니다.
– 특수문자에 $, _ 포함 가능
– 하나의 소스 파일에 여러 클래스를 선언할 때 소스 파일과 이름이 같은 클래스만 공용 클래스로 선언할 수 있습니다.
– 특별한 사유가 없는 한 소스 파일 당 하나의 클래스 선언
개체 생성 및 참조 변수
무덤 새로운 연산자 : 클래스로부터 객체를 생성할 때 사용하는 객체 생성 연산자

ㄴ 위 그림에서 클래스 변수는 생성된 객체를 의미합니다.
클래스의 두 가지 용도
– 도서관 수업 : 다른 클래스에서 사용하는 실행 가능하지 않은 클래스
– 수업을 하다 : main() 메서드가 있는 실행 가능한 클래스
일반적으로 Java는 실행 가능한 클래스와 여러 라이브러리 클래스로 구성됩니다.
클래스 멤버

public class ClassName {
//필드 선언 (필드_객체의 데이터가 저장되는 곳)
int fieldName;
//생성자 선언 (생성자_객체 생성 시 초기화 역할 담당)
ClassName() {...}
//메소드 선언 (메소드_객체의 동작으로 호출 시 실행하는 블록)
int methodName() {...}
}
무덤 대지 : 객체 데이터를 저장하는 역할
무덤 건설자 : new 연산자로 객체를 생성할 때 객체의 초기화를 담당하며, 선언 형태는 메소드와 비슷하나 리턴 타입이 없고 클래스 이름과 동일하다.
무덤 방법 : 개체가 수행할 작업, 다른 프로그램의 기능 및 호출 개체 간의 상호 작용
필드 선언 및 사용
ㅁ필드선언 : 값의 정의
// 값에 대한 정의
// field
int age;
String name;
int score;
// 기능에 대한 정의
// method
타입 필드명 ( = 초기값);
※ 필드와 (로컬)변수의 차이※
– (로컬) 변수는 생성자 및 메서드 블록에서 생성자 및 메서드를 선언/호출할 때만 생성되어 사용됩니다.
필드는 클래스 블록에서 선언됨 / 개체 내부에 존재 / 개체 내부 및 외부에서 사용 가능
필드 이름은 일반적으로 첫 문자가 lowerCamelCase인 소문자입니다.
ㄴ 객체 생성 시 초기화되지 않은 필드 값을 자동으로 생성합니다. 기본로 초기화
ㄴ Default type은 0, false / reference type은 null
ㅁ 필드 다루기: 필드를 쓴다는 것은 필드 값을 읽고 바꾸는 것을 의미합니다.
너 . 운영자: 점(.)은 개체 액세스 연산자입니다. 인용 변수 및 점(.) 연산자액세스 필드(외부 개체에서)
MyClass01 var1 = new MyClass01();
// . : 필드 접근 연산자
var1.age = 99;
var1.name = "son";
var1.score = 100;
System.out.println(var1.age);
System.out.println(var1.name);
System.out.println(var1.score);
MyClass01 var2 = new MyClass01();
var2.age = 88;
var2.name = "cha";
var2.score = 200;
System.out.println(var2.age);
System.out.println(var2.name);
System.out.println(var2.score);
ㄴ 필드가 클래스에 선언되어 있다고 해서 즉시 사용할 수 있는 것은 아닙니다.
필드는 개체의 데이터이며 개체가 없으면 필드도 존재하지 않습니다.
필드는 클래스에서 개체를 생성한 후 사용할 수 있습니다.
public class Car {
//필드 선언
String company = "현대자동차";
String model = "그랜저";
String color = "검정";
int maxSpeed = 350;
int speed;
}
//Car 객체 생성
Car myCar = new Car2();
//Car 객체의 필드값 읽기
System.out.println("제작회사: " + myCar.company);
System.out.println("모델명: " + myCar.model);
System.out.println("색깔: " + myCar.color);
System.out.println("최고속도: " + myCar.maxSpeed);
System.out.println("현재속도: " + myCar.speed);
//Car 객체의 필드값 변경
myCar.speed = 60;
System.out.println("수정된 속도: " + myCar.speed);
메소드 선언
메서드 선언은 개체의 동작을 실행 블록으로 정의합니다.

ㅁ 반환형
: 메소드가 실행된 후 호출자에게 전달되는 결과 값의 유형
값을 반환하지 않는 메서드는 무효로 작성됩니다.
ㄴ반환 타입이 있는 메소드는 실행 블록에서 return 문으로 반환 값을 지정해야 합니다.
void powerOn() {...} //리턴값이 없는 메소드 선언
double divide(int x, int y) {...} //double 타입 값을 리턴하는 메소드 선언
// field
// method
// 리턴타입 메소드명 (파라미터 목록) { 실행문들...}
// 메소드명 작성관습 : loewrCamelCase
void methodName(int param) {
//실행문들...
}
void run() {
}
void wakeUp() {
}
void standUp() {
}
ㅁ 방법명
: 메서드명은 카멜케이스로 작성하며 첫글자는 소문자로 한다.
ㅁ 매개변수
: 메소드 호출 시 전달되는 파라미터를 받기 위해 사용
전달할 매개변수가 없으면 이 매개변수를 생략할 수 있습니다.
double divide(int x, int y) {...}
ㅁ 실행블록
: 메소드 호출 시 실행되는 부분
public class Calculator {
//리턴값이 없는 메소드 선언
void powerOn() {
System.out.println("전원을 켭니다.");
}
//리턴값이 없는 메소든 선언
void powerOff() {
System.out.println("전원을 끕니다.");
}
//호출 시 두 정수 값을 전달받고,
//호출한 곳을 결과값 int를 리턴하는 메소드 선언
int plus(int x, int y) {
int result = x + y;
return result; //리턴값 지정;
}
//호출 시 두 정수 값을 전달받고,
//호출한 곳으로 결과 값 double을 리턴하는 메소드 선언
double divide(int x, int y) {
double result = (double)x / (double)y;
return result; //리턴값 지정;
}
메서드 호출
: 메서드 블록 실행
ㄴ 메서드는 객체 내부에서 호출되지만 다른 객체에서도 호출될 수 있으므로 객체가 상호 작용하는 방식을 정의합니다.
객체가 존재하지 않으면 메서드를 호출할 수 없습니다.
ㄴ 내부 호출 시 메소드명을 사용하여 호출
ㄴ 필드와 마찬가지로 외부 객체에서 호출 시 인용 변수 및 점(.) 연산자 통화 사용

메서드에 매개변수가 있는 경우 매개변수의 유형, 순서 및 개수에 따라 다릅니다. 매개변수가 필요합니다
ㄴ 메서드에 반환값이 있는 경우 할당 연산자를 사용하여 변수에 저장할 수 있습니다.
ㄴ 이때 변수 타입은 메소드의 리턴 타입과 동일하거나 자동으로 변환될 수 있습니다.
메소드 오버로딩 메소드 오버로딩
: 메서드 이름은 같지만 매개변수의 유형, 번호 및 순서가 다른 여러 메서드를 선언합니다.
*목적: 각종 파라미터 처리
// 파라미터 개수, 순서, 타입에 맞게 argument 전달해야 함
// method overloading
// 메소드 이름이 같아도 파라미터 개수, 순서, 타입이
// 다르면 다른 메소드
void method1(int i) {
System.out.println("정수 하나 받는 메소드");
}
void method1(long i) {
System.out.println("long 하나 받는 메소드");
}
void method1(int i, int j) {
System.out.println("정수 두개 받는 메소드");
}
void method1(String i, int j) {
System.out.println("문자열 하나, 정수 하나 받는 메소드");
}
void method1(int i, String j) {
System.out.println("정수 하나, 메소드 하나 받는 메소드");
}
ㄴ 아래 코드 샘플은 이 방법을 오버라이드하여 인수가 1인 경우 정사각형의 넓이를, 인수가 2인 경우 직사각형의 넓이를 계산합니다.
public class Calculator {
//정사각형의 넓이
double areaRectangle(double width) {
return width * width;
}
//직사각형의 넓이
double areaRectangle(double width, double height) {
return width * height;
}
public static void main(String() args) {
//객체 생성
Calculator myCalcu = new Calculator();
//정사각형 넓이 구하기
double result1 = myCalcu.areaRectangle(10);
//직사각형의 넓이 구하기
double result2 = myCalcu.areaRectangle(10,20);
System.out.println("정사각형 넓이 = " + result1);
System.out.println("직사각형 넓이 = " + result2);
}
(오늘의 단축키)
클래스 이름에 커서를 놓고 F3을 눌러 클래스 파일로 이동합니다.
Alt + 왼쪽 화살표 키: 원본 파일로 돌아가기