하나의 페이지에 여러개의 클래스가 있을수있지만  
public class는 한번만 존재해야하며
public 타입을 가지는 클래스를 파일명으로한다 
main method 를 가지는 클래스에 public타입을 준다 

class 변수는 static이 붙는 변수로 static 변수라고 한다
class 변수는 클래스명.변수명 으로 호출한다  
같은 클래스일경우 클래스명없이 호출가능하다

instance 변수는 static이 붙지않고 class영역에서 선언된변수를 말한다 
instance 변수는 instance 생성후 생성한 객체명.변수명 으로 호출한다 
class 변수와 instance변수는 class영역에 선언되 멤버변수로 불린다 
멤버변수는 초기화하지 않을경우 default값이 들어간다

static 변수는 공유변수로 각각의 instance가 같이사용한다  
static 변수는 instance생성과 상관없이 생성된다 

생성자는 instance(객체)를 생성할때 호출하고 생성자명은 해당class명과 동일해야한다 
반환타입이 없어야 하고 멤버변수를 초기화할때 사용한다
CarDemo()생성자를 호출해서 new 연산자를 통해 클래스에 객체를 생성한다

생성자 없이 멤버변수를 초기화할때는 static String kind = "소형차"; 식으로 가능하다 

생성자를 이용하여 멤버변수를 초기화할수있다


local 변수는 method안에서 선언된변수를 말한다 
local 변수는 method의 block이 끝나는순간 사라진다. 
local 변수는 초기화를 해줘야한다.

class method에는 static이 붙고 class 변수만 사용할수있다
class method호출은 class명.method명 으로 호출하고 instance를 생성할필요없다

JVM 은 main method가 있어야 실행되기때문에  
main method는 static 이 붙어 객체생성없이 실행된다 

//class CarDemo
static String kind = "소형차"; //class변수
int number;  //instance 변수 
int speed;
String color;  

 

public CarDemo() {  
kind="소형차";  
int aa = 20;  
 //생성자이용해 멤버변수 초기화

public static void kind() { 
System.out.println("소형차");
//class method

public void speedUp() {  
    kind="대형차"; 
    speed +=10;  
//instance method에는 class 변수를 사용할수있다 

public void speedDown() {  
speed -=5;  
}  

//public class CarTest
static String kind1; //class변수

//main
CarDemo myCar = new CarDemo(); //instance 생성 
myCar.color="white"; 
CarDemo yourCar = new CarDemo(); 

System.out.println(CarDemo.kind); //class변수 호출 
System.out.println(kind1); //같은클래스내 class변수 호출 

System.out.println("myCar.color"); //instance변수 호출

System.out.println(myCar.kind); //공유변수이므로 같은값이 나온다 
System.out.println(yourCar.kind); 

myCar.kind = "중형차"; 
System.out.println(myCar.kind); 
System.out.println(yourCar.kind); //공유변수로 "중형차"가 출력된다  

int c = 100; //지역변수는 초기화 해줘야 한다 
System.out.println(c); 

System.out.println(aa); //생성자 안에서 선언된변수로 block밖에선 사용할수없다. 

System.out.println(myCar.speed); //0 
myCar.speedUp(); //멤버 메소드는 인스턴스 생성후 호출이가능하다 
System.out.println(myCar.speed); //10 

System.out.println(yourCar.speed); //0 
yourCar.speedUp(); //(참조변수명.메소드명) 
System.out.println(yourCar.speed); //10 

CarDemo.kind(); //class method 호출

'java' 카테고리의 다른 글

메소드, 생성자 오버로딩(overloading)  (0) 2019.08.02
return, 매개변수  (0) 2019.08.02
class 객체 및 instance, 멤버요소들  (0) 2019.08.02
입출력(main method/System.in/Scanner)  (0) 2019.08.01
배열 Array  (0) 2019.08.01

+ Recent posts