class
- 자바는 클래스를 먼저 만들어야 객체를 만들 수 있다 > 클래스는 설계도정도의 개념이다
- 클래스는 일종의 틀 ex) 메인메소드가 팔을 움직이는거라면 팔,손목 설계도 정도라고 생각하면 됨. 그 설계도를 통해 팔을 만들어내는게 객체화를 통해 이루어지는 것. 그리고 그 팔을 어떻게 할지 메인메소드에서 실행. (매우 중요)
-기본구조
ex)
public class Car{
}
> 여기서 Car 클래스는 생성이 되었지만 객체가 만들어진 것은 아니다 (팔의 설계도만 만들어지는 것)
객체화-
메소드와 변수를 모아놓은 것에 불과한 클래스를 사용할 수 있도록
해당 클래스 타입의 객체명을 선언하고 값을 넣어줘서
해당 클래스의 변수나 메소드를 사용 가능한 상태로 만드는 것
- 객체를 생성하려면?
ex)
public class CarExam{
public static void main(String args[]){
Car c1 = new Car();
Car c2 = new Car();
}
}
Car c1 = new Car(); > 여기서 실제 객체가 생성된다(즉 팔이 만들어진다는 것)
이때 만들어진 객체를 인스턴스라고 한다
c1과 c2는 객체를 참조하는 변수이다
String 클래스
String str1 = "hello";
String str2 = "hello";
str1과 str2 모두 같은 인스턴트를 참조한다.
String str3 = new String("hello");
String str4 = new String("hello");
위 코드는 인스턴스화를 하는 코드이다.
str3과 str4은 다른 인스턴스를 참조한다.
이게 차이점이 있는데,
str1 == str2 은 TRUE가 되지만,
str3 == str4 은 false가 된다.
str3와 str4는 서로 다른 인스턴스를 참조하기에
두 개의 값을 비교하려면
str1.equals(str2) 라는 구문을 통해서 비교해야하고
이 값은 TRUE가 된다.
field
- 객체의 데이터가 저장되는 곳
- 객체의 고유 데이터를 저장한다 > ex) 손목의 길이, 팔의 길이 등
ex)
public class Car{
String name;
int number;
}
- 이름과 번호를 필드로 가짐
ex)
//c1.name은 c1이 참조하는 객체의 name 을 의미.
c1.name = "소방차"; //c1이 참조하는 객체의 name을 소방차로 설정
c1.number = 1234; // c1.number = 1234란 c1이 참조하는 객체의 number를 1234 로 설정
c2.name = "구급차" //c2가 가리키는 객체의name을 구급차로 설정
c2.number = 1004; //c2가 가리키는 객체의 number를 1004로 설정
System.out.println(c1.name); //콘솔에 c1이 참조하는 객체의 name 을 출력합니다.
System.out.println(c1.number); //콘솔에 c1이 참조하는 객체의 number 를 출력합니다.
String name = c2.name; //c2가 참조하는 객체의 name 을 String 타입 변수 name 도 참조하게 합니다.
메소드
기능을 구현하는 부분을 메소드라고 한다
ex) 매개변수X, 리턴X
public class MyClass{
public void method1(){
System.out.println("method1이 실행됩니다.");
}
}
ex) 매개변수O, 리턴X
public class MyClass{
public void method2(int x){
System.out.println(x + " 를 이용하는 method2입니다.");
}
}
ex) 매개변수X, 리턴O
public int method3(){
System.out.println("method3이 실행됩니다.");
return 10;
}
//위 메소드가 실행되면, 콘솔에 'method3이 실행됩니다.' 를 출력하고, 이 메소드를 호출한 쪽에 10을 리턴한다.
ex) 전체 코드를 살펴보기
public class MyClass{
public void method(){
System.out.println("method1이 실행됩니다.");
}
public void method2(int x){
System.out.println(x + " 를 이용하는 method2입니다.");
}
public int method3(){
System.out.println("method3이 실행됩니다.");
return 10;
}
public void method4(int x, int y){
System.out.println(x + "," + y + " 를 이용하는 method4입니다.");
}
public int method5(int y){
System.out.println(y + " 를 이용하는 method5입니다.");
return 5;
}
}
public class MyClassExam{
public static void main(String args[]){
MyClass my1 = new MyClass(); //메소드가 정의된 클래스 생성
my1.method1(); //MyClass에서 정의해 놓은 메소드 method1() 를 호출한다.
my1.method2(10);
int x = my1.method3();
System.out.println("method3 이 리턴한 " + x + " 입니다.");
my1.method4(10,100);
int x2 = my1.method5(50);
System.out.println("method5 가 리턴한 " + x2 + " 입니다.");
}
}
결과 :
m1이 실행됩니다.
10를 이용하는 method2입니다.
method3이 리턴한 10입니다
110를 이용하는 method4입니다
50을 이용하는 method5입니다
method가 리턴한 5입니다
*본 글은 프로그래머스<자바입문>를 공부하며 복습한 내용을 정리한 것입니다.
'JAVA' 카테고리의 다른 글
JAVA(2022.05.09)- interface의 default메소드 (0) | 2022.05.09 |
---|---|
JAVA(2022.05.08)-클래스 형변환 , interface (0) | 2022.05.08 |
JAVA(2022.05.07)-추상클래스, super와 부모생성자, 오버라이딩 (0) | 2022.05.07 |
JAVA(20220.05.05)-변수의 범위와 static, enum, 생성자 (0) | 2022.05.05 |
JAVA(2022.5.3) do-while문, for,배열, for each문 (0) | 2022.05.03 |