클래스 멤버에게 붙이는 키워드.
1. 멤버 변수
2. 멤버 메서드
같은 틀(클래스)에서 찍어낸 인스턴스들이 서로 다른 값을 가지는 경우와 공통된 값을 가지는 경우가 있다.
class SmartPhone{
// 개개인이 가지는 데이터(다양)
// 객체 멤버 변수 역할
private String model;
private String color;
private int price;
// 모든 객체가 가지는 공통된 데이터 -> 정적멤버
private static String manu; -> 정적 멤버변수
// static변수의 getter, setter는 static메서드로 만든다.
public static String getManu() {
return manu;
}
public static void setManu(String manu) {
SmartPhone.manu = manu;
}
}
...
public static void main(String[] args) {
// 핸드폰 3대
SmartPhone.setManu("삼성");
System.out.println(SmartPhone.getManu());
...
public static void main(String[] args) {
Robot r1=new Robot();
Robot r2=new Robot();
Robot r3=new Robot();
System.out.printf("총 개수 : %d개\n", Robot.count);
}
}
// 로봇장난감 클래스
class Robot{
private String name;
public static int count; // 편의상 public으로.
public Robot() {
Robot.count++;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
클래스를 관리하는 집합(물리적인 폴더)
클래스 관리, 클래스 용도 명확하게 알아보게 하기 위함
SmartPhone s1=new SmartPhone(); // 같은 패키지 내에
com.test.aaa.SmartPhone s2=new com.test.aaa.SmartPhone(); // aaa패키지 내에
클래스와 클래스 간에 해당 클래스가 소유하고 있는 코드(멤버 변수, 멤버 메서드)를 물려주는 행위. 부모 클래스가 가지고 있는 코드를 자식 클래스에게 물려준다.
코드 재사용을 위해서.
private static void m1() {
Random rnd=new Random();
System.out.println(rnd.nextInt()); // int범위 내에서 발생
System.out.println(rnd.nextInt(10)); // 0~9범위 내에서 발생.
}
java.lang(자바 기본 패키지)에 있다. 루트 클래스(모든 클래스의 조상)
클래스의 일종. 일반 클래스의 목적이 객체 생성인데 반해 추상 클래스는 객체의 행동을 표준화하는 것이 목적이다.(객체 생성은 불가능) 상속관계에서 클래스 부모 역할은 가능하다. 추상 메서드를 자식들에게 강제로 만들라고 시키려고. 추상 클래스의 하위 클래스들은 모두 사용법이 동일해진다.
abstract class Monitor{ // 추상클래스의 선언
}
추상클래스에서 추상메서드가 선언되면 그 추상클래스를 상속받은 클래스는 반드시 추상메서드를 구현해야 한다.
abstract class Monitor{
// 멤버 구현
public String model;
public int price;
// 추상메서드 선언
public abstract void on();
public abstract void off();
}
class LG100 extends Monitor{
public void on(){
System.out.println("전원 On");
}
public void off(){
System.out.println("전원 Off");
}
}