this
this를 통해 생성자 및 메서드에서 생성된 인스턴스의 필드 데이터에 접근 가능
public class Car{
String name;
int number;
public Car(String n){
name = n;
}
}
public Car(String name){
name = name;
}
public Car(String name){
this.name = name;
}
this를 통해 생성자의 매개변수인 name을 필드 name의 값으로 준다.
즉 매개변수의 값을 필드에 대입하라는 의미가 된다
메소드 오버로딩
- 매개변수의 유형과 개수를 다르게 해서 같은 이름의 메소드를 여러 개 가질 수 있게 하는 기술이다
why?
- 더하기 기능을 진행시키는 메소드가 있다고 생각해보자. 정수 a,b를 더하는 메소드. 실수 c,b를 더하는 메소드. 문자열 A,B를 더하는 메소드. 이 메소드를 각각 정의하여 사용하는 것보다 하나의 메소드. add 메소드를 선언하고 오버로딩을 통해 구현하는 것이 코드의 중복을 피할 수 있게 한다.
ex)
class MyClass2{
public int plus(int x, int y){
return x+y;
}
public int plus(int x, int y, int z){
return x + y + z;
}
public String plus(String x, String y){
return x + y;
}
}
public int plus(int i, int f){
return i+f;
}
public MethodOverloadExam{
public static void main(String args[]){
MyClass2 m = new MyClass2();
//인스턴스화
System.out.println(m.plus(5,10));
System.out.println(m.plus(5,10,15));
System.out.println(m.plus("hello" + " world"));
}
}
이렇게 plus 메소드 하나에 다른 매개변수를 받게 함으로써 더욱 간편하게 호출할 수 있다.
패키지(package)
-클래스를 관리하기 위해 만드는 일종의 폴더개념이다
-클래스 이름이 동일해도 패키지가 다르면 다른 클래스로 인식한다.
다른 패키지 속의 클래스를 사용하고 싶다면? > import문을 통해 패키지를 가져와라
*주의사항*
두 개의 패키지가 import된 상황에서 이름이 같은 클래스를 사용하려고 할 때 컴파일러가 구분을 할 수 없으므로
객체화 시 ,
패키지이름.클래스이름.인스턴스화할 이름
으로 객체를 선언해야한다.
ex)
import 패키지1
import 패키지2
public class 실험 {
public static void main(String[] args){
패키지1.첫클래스.1번 = new 패키지1.첫클래스.1번();
패키지2.첫클래스.2번 = new 패키지2.첫클래스.2번();
}
}
// 첫클래스라는 이름의 클래스가 두 패키지에 모두 선언되어있고
// 패키지1,2 모두 import 되어있을 때 오류방지를 위해서
상속
- 부모클래스의 속성을 자식클래스의 속성에 물려주는 것 > 즉, 부모클래스의 메소드를 자식클래스에서 선언없이 사용이 가능하다
- 형식 > ex) public class son extends father{ }
- 자바는 다중상속이 불가능하기 때문에 하나의 클래스만 상속할 수 있다
코드예시
ex)
public class mom{
public string cute(){
System.out.println("귀엽다");
}
}
mom 클래스의 cute메소드
public class jun extends mom{
public void smart(){
System.out.println("똑똑해");
}
}
jun 클래스의 smart 메소드
public class exam{
public static void main(String args[]){
jun junseo = new jun;
junseo.cute;
junseo.smart;
}
}
output will be
귀엽다
똑똑해
즉, 부모의 필드와 메소드를 사용가능하게 만드는 것이 상속이다 !
위 줄에서 부모의 필드가 나왔는데, 원하는대로 사용가능하게, 불가능하게 제어할 수 있다.
그것이 바로 접근제한자다.
접근제한자
종류
- public > 어떤 클래스든 접근가능
- protected > 자기 자신, 같은 패키지, 다른 패키지여도 상속받은 자식 클래스에서 가능
- protected > 자기 자신만
- 접근제한자X > default 지정자
*본 게시글은 프로그래머스<자바 입문>강의를 토대로 작성한 글입니다.
'JAVA > 상속' 카테고리의 다른 글
상속(inheritance) (0) | 2022.09.26 |
---|