리턴값 = 전자계산기객체.메소드(매개값1, 매개값2, …);
① 집합 관계 ex) 자동차 - 핸들, 엔진, 타이어, ...
② 사용 관계 ex) 사람 - 자동차: 달린다, 멈춘다, ...
③ 상속 관계 : 상위 하위 객체를 생성하는 관계 ex) 기계 - 자동차
public class 클래스 이름 {
system.out.println("Hello, JAVA");
}
new 클래스();
클래스 변수;
변수 = new 클래스();
클래스 변수 = new 클래스();
public class Student{
}
public class StudentExample{
public static void main(String[] args){
Student s1 = new Student();
System.out.println("s1 변수가 Student 객체를 참조합니다.");
Student s2 = new Student();
System.out.println("s2 변수가 또 다른 Student 객체를 참조합니다.");
}
}
public class ClassName{
// 필드
int filedname;
// 생성자
ClassName(){…}
//메소드
void methodName(){…}
}
타입 필드 = 초기값;
public class Car {
// 필드
int speed; ← 초기값X, 기본값 0으로 저장되어 있음
// 생성자
Car(){
speed = 0;
}
// 메소드
void method(...){
speed = 10;
}
}
public class Person{
// Car 객체 생성
Car myCar = new Car();
// 필드 사용
myCar.speed = 60;
}
public 클래스() {}
클래스( 매개변수 선언, …) {
// 객체의 초기화 코드
}
public class Car{
Car(){…} ←생성자
Car(String model){…} ←생성자
Car(String model, String color){…} ←생성자
Car(String model, String color, int maxSpeed){…} ←생성자
}
public class Car {
//필드
String company = "현대자동차";
String model;
String color;
int maxSpeed;
//생성자
Car() {
}
Car(String model) {
this(model, "은색", 250); ←마지막 생성자 호출
}
Car(String model, String color) {
this(model, color, 250); ←마지막 생성자 호출
}
Car(String model, String color, int maxSpeed) {
this.model = model; ─┐
this.color = color; │ 필드 초기화 공통 실행 코드
this.maxSpeed = maxSpeed; ─┘
}
}
void powerOn(){…} ← 리턴값이 없는 경우
double divide(int x, int y){…} ← 리턴값이 있는 경우, 리턴 타입 double
int result = divide(10, 20);
double divide(int x, int y){…}
double result = divide(10.5, 20.0); ←이런 경우 컴파일 에러 발생
byte b1 = 10;
byte b2 = 20;
double result = divide(b1, b2); ←이런 경우에는 byte가 int로 자동 타입 변환되므로 컴파일에러 발생x
int sum1(int[] values){}
←메소드 호출 전 배열 생성해야하므로 번거로울 수 있음 int sum2(int … values){}
int result = sum2(1, 2, 3);
←메소드 호출 시 쉼표 이용하여 매개변수 값 나열int result = sum2(1, 2, 3, 4, 5);
메소드(매개값, …);
클래스 참조변수 = new 클래스(매개값, …);
참조변수.메소드(매개값, …); ←리턴값이 없거나, 리턴값을 받지 않을 경우
타입 변수 = 참조변수.메소드(매개값, …); ←리턴값이 있고, 리턴값을 받고 싶을 경우
class 클래스 {
리턴 타입 메소드이름 (타입 변수, …){…}
↑ ↑ ↑
상관없음 동일 매개변수의 타입, 개수, 순서가 달라야함
↓ ↓ ↓
리턴 타입 메소드이름 (타입 변수, …){…}
}
public class Car {
// 필드
int gas;
// 메소드
void setSpeed(int speed){…}
}
public class Calculator{
String color; // 인스턴스 필드
void setColor(String color){ this.color = color; } // 인스턴스 메소드
static double pi = 3.14159; // 정적 필드
static int plus(int x, int y){ return x + y; } // 정적 메소드
static int minus(it x, int y){ return x - y; } // 정적 메소드
}
double result = 10*10*Calculator.pi;
int result2 = Calculator.plus(10, 5);
int result2 = Calculator.minus(10, 5);
Calculator myCalcu = new Calculator();
double result = 10*10*myCalcu.pi;
int result2 = myCalcu.plus(10, 5);
int result2 = myCalcu.minus(10, 5);
public class 클래스 {
// 정적 필드
private static 클래스 singleton = new 클래스();
// 생성자
private 클래스() {}
// 정적 메소드
static 클래스 getInstance() {
return singleton;
}
}
static final 타입 상수 = 초기값;
static final double PI = 3.14159;
static final double EARTH_RADIUS = 6400;
static final double EARTH_AREA = 4*Math.PI*EARTH_RADIUS*EARTH_RADIUS;
상위패키지.하위패키지.클래스
package 상위패키지.하위패키지;
public class ClassName(){}
// default 접근 제한
class 클래스 { … }
// public 접근 제한
public class 클래스 { … }
public class ClassName{
// public 접근 제한
public ClassName( … ){ … }
// protected 접근 제한
protected ClassName( … ){ … }
// default 접근 제한
ClassName( … ){ … }
// private 접근 제한
private ClassName( … ){ … }
}
// 필드 선언
[public | protected | private] [static] 타입 필드;
// 메소드 선언
[public | protected | private] [static] 리턴타입 메소드( … ) { … };
privat 타입 fieldName;
// Getter
public 리턴 타입 getFieldName(){
return fieldName;
}
// Setter
public void setFieldName(타입 fieldName){
this.fieldName = fieldName;
}
- 객체 : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별 가능한 것 - 클래스 : 객체를 생성하기 위한 필드와 메소드가 정의되어 있는것, 클래스로부터 객체를 생성할 때 new 연산자 사용 - 필드 : 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳으로 모든 타입이 가능. 초기값이 지정되지 않을 경우 해당 타입의 기본 초기값으로 설정된다 - 생성자 : 객체 생성 시 초기화 시키는 메소드, new 연산자로 호출되며 모든 클래스에 반드시 하나 이상 존재한다. 생성자를 선언하지 않을 경우 자동으로 만들어지는 중괄호 블록이 비어있는 생성자 - 메소드 : 객체의 동작에 해당하는 실행 블록으로 리턴 타입 메소드명 (매개변수, ...){내부 코드}로 구성 - 인스턴스 멤버 : 객체 생성 후 사용 가능한 필드와 메소드 - 정적 멤버 : 클래스에 고정된 멤버로 객체를 생성하지 않고도 사용 가능한 필드와 메소드 - 패키지 : 파일 시스템 폴더 형태를 하는 것으로 클래스를 유일하게 만들어주는 식별자 - 접근 제한자 : 클래스, 생성자, 필드, 메소드에 접근 제한하기 위한 용어. public, protected, default, private 이렇게 네 가지 접근 제한 종류가 있고 default는 나머지 세가지 접근 제한자를 사용하지 않은 경우 적용된다 |
셋째주 느낀점
지각쟁이가 되어버렸다. 마음은 미리미리 해야지 하는데 잘 되지 않는다. 다른 사람들의 숙제를 보면서 나도 저 사람들처럼 잘 하고싶다 라고 생각하지만 현실은 항상 부족한 느낌
참여하는 것만으로도 큰 의미가 있다고 생각하지만 잘하고 싶은건 큰 욕심일까
일단 하고 조금씩 수정과 보완을 거쳐가자고 되뇌이지만 한번에 잘하고 싶다 이거 완전 욕심쟁이네
매번 다짐하지만 어제보다 나은 내가 되자 다음에는 지각하지 말자!