1.static vs non static
static 어느 클래스에서도 접근가능하고, 같은 변수를 공유 : 여러번 호출시 값이 누적되어 변경
non-static: 이름이 같더라도 별개의 변수: 여러번 호출시에도 처음 그대로
2.접근제한자
public:
protected : 다른 패키지 같은 클래스 상속
default: 같은 패키지 내에서만
private: 같은 클래스내에서만
3.상속
A extends B: A클래스는 B클래스를 상속한다. A(자식)이 사용할 수 있는 범위가 넓다
Vehicle.java : Vehicle 클래스에는 name 객체변수가 있다. SetName 메소드에는 입력o 출력x(프린트x)
package com.test04;
public class Vehicle {
String name;
public void SetName(String name) {
this.name = name;
}
}
Car.java //웬만하면 클래스이름은 대문자로 하기!! 객체들랑 헷갈려,,
package com.test04;
public class Car extends Vehicle{ //자식클래스 extends 부모클래스
}
Car라는 클래스가 Vehicle을 상속받음
public class Car extends Vehicle { // 자식클래스 extends 부모클래스
public static void main(String[] args) {
Car car = new Car();
car.SetName("BMW"); //객체.메소드(인수)
System.out.println(car.name); //print(객체.객체변수)
}
}
출력값 : BMW
public class Car extends Vehicle { // 자식클래스 extends 부모클래스
public void Drive() { // Drive 메소드 입력x 출력x(프린트만 한다)
System.out.println(this.name + " vroom vromm-");
}
public static void main(String[] args) { // main 메소드
Car car = new Car();
car.SetName("BMW");
System.out.println(car.name); // Vehicle메소드는 프린트함수가 없음
car.Drive(); // 객체.메소드
}
}
출력값:
BMW
BMW vroom vroom-
Vehicle car=new Car(); //Car의 새로운 객체는, Vehicle 자료형이다.
반대는 안된다. Vehicle> Car 이므로, =new 자식클래스가 오른쪽에 위치한것만 가능
기본적으로 모든 클래스는 Object 클래스를 상속받고 있다.
그래서 아래와 같은 형태도 가능하다.
Object vehicle=new Vehicle();
Object car=new Car();
4.메소드 오버라이딩
public class Deutsch extends Car { // Vehicle> Car> Deutsch순서로 상속
public static void main(String[] args) {
Deutsch deutsch = new Deutsch();
deutsch.SetName("E_CLASS");// Vehicle의 SetName 메소드
deutsch.Drive();
}
}
출력값: E_CLASS vroom vroom-
public class Deutsch extends Car { // Vehicle> Car> Deutsch 순서로 상속
public void Drive() { //Car의 Drive 메소드와 같음
System.out.println(this.name+" vroom vroom- in Deutsch");
}
public static void main(String[] args) {
Deutsch deutsch = new Deutsch();
deutsch.SetName("E_CLASS");// Vehicle의 SetName 메소드
deutsch.Drive();
}
}
E_CLASS vroom vroom- in Deutsch
자식클래스의 메소드가 더 높은순위를 가진다. 부모클래스의 메소드를 덮어쓴다.
5.메소드 오버로딩( 변경x 추가o )
같은 클래스에 입력값만추가(자료형 변수);
6.다중상속
자바는 다중상속 지원안해.
class C extends A, B { //이런게 안 된단 소리
public void static main(String[] args) {
위키독스
온라인 책을 제작 공유하는 플랫폼 서비스
wikidocs.net
'자바' 카테고리의 다른 글
자바3. 생성자, 인터페이스 (0) | 2021.06.28 |
---|---|
자바1. 자료형, equals vs ==, 클래스, 메소드 (0) | 2021.06.26 |