목표
자바의 Class에 대해 학습하세요.
학습할 것 (필수)
클래스 정의하는 방법
객체 만드는 방법 (new 키워드 이해하기)
메소드 정의하는 방법
생성자 정의하는 방법
this 키워드 이해하기
-클래스 정의하는 방법
클래스를 정의하기전에 먼저 클래스에 대해 알아보자.
클래스란 '객체를 정의해놓은것.'또는 '객체의 설계도 또는 틀'이라고 정의 할수 있다.
클래스는 객체를 생성하는데 사용되며 객체는 클래스의 정의된대로 생성된다.
클래스 작성 규칙
-하나 이상의문자로 이루어져야한다.
-첫번째 글자에는 숫자가 올수가 없다.
-$,_외에는 특수문자가 사용불가하다.
-자바 명령어,키워드는 사용할수 없다.
-이름은 대소문자를 구분한다.
클래스 정의하는 방법
publc class Tv{
String color;
boolean power;
int channel;
public void TvTest{
Tv t;
t= new Tv();
t.channel=7;
t.channelDown();
system.out.println("현재 채널은"+t.chnnel+"입니다.")
;}
-객체 만드는 방법
객체란 '실제로 존재하는것이다.'
객체의 정의 :실제로 존재하는것,개념
객체의 용도 :객체가 가지고 있는 기능과 속성에 따라 다름
-객체의 생성
클래스로 부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며 ,어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다.
객체를 생성하기 위해서는 new연산자를 사용한다.new키워드는 클래스로부터 객체를 생성시키는 연산자이다.
class Tv;
Tv tv= new Tv();
-메소드 정의하는 방법
자바에서는 클래스는 멤버로 속성을 표현하는 필드와 기능을 표현하는 메소드를 가지는데
그중에서 메소드란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할수있다.
메소드 정의하기
-메소드 구조
public 리턴자료형 메소드명(입력자료형1 입력변수1, 입력자료형2 입력변수2, ...) {
...
return 리턴값;
}
public class Sample{
public static void sum(){
int sum=0;
for(int i=0; i<20; i++){
sum+=1;
}
System.out.println(sum);
}
}
*위에 형식 같은 경우에는 리턴 지료형이 void라서 return 문이 필요없다.
-생성자 정의하는 방법
모든클래스는 인스턴스화 될때 생성자를 사용한다.
생성자의 특징
-생성자는 리턴타입이없다.
-생성자를 프로그래머가 만들지 않으면 매개변수가 없는 생성자가 컴파일할때 자동으로 만들어진다.
-매개변수가 없는 생성자를 기본 생성자라고 한다.
-생성자를 하나라도 프로그래머가 만들었다면 기본생성자는 자동으로 만들어 지지 않는다.
생성자의 역할
1.생성자가 하는일은 객체가 될때 필드를 초기화 하는 역할을 수행한다.
*생성자의 기본구조
public 클래스명(초기화 할 변수){
인스턴스 변수 초기화 명령문들
}
생성자 생성하는방법
public class Tv{
String name;
int channel;
public Tv(String n){
name =n;
}
}
public class Tv2{
public static void main(String args[]){
Tv tv1= new Tv("올레드");
TV tv2= new TV("LED");
System.out.println(tv1.name);
System.out.println(tv1.name);
}
}
-this 키워드 이해하기
this는 현재객체, 자기 자신을 나타낸다.
public class Tv{
String name;
int channel;
public Tv(String n){
name =n;
}
}
여기서 TV클래스의 생성자 매개변수의 이름은 n인데 이 n이란 변수명은 무엇을 의미하는지 쉽게 알수가 없기때문에 n을 name로 바꿔 사용한다.
public Tv(String name){
name =name;
}
'name=name'라고 코드를 바꾸면 가깝게 선언된 변수를 우선 사용하기 때문에 'name=name'이라는 코드는 매개변수의 name 값을 매개변수 name의 값을 매개변수 name에 대입하라는 의미가 된다.
public Tv(String name){
this.name =name;
}
필드는 바뀌지 않으며, 필드는 컴파일러와 jvm에게 알려주기위해 this를 사용해야한다.
앞에this.name은 필드 name을 말하며 뒤에 name은 매개 변수를 의미한다.
출처
자바의 정석
프로그래머스