2022. 11. 22. 15:43ㆍJAVA
오버라이딩
조상 클래스로 부터 상속받은 메서드의 내용을 변경하는 것
자손클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와
-이름이 같아야 한다.
-매개변수가 같아야 한다.
-반환타입이 같아야 한다.
오버라이딩 메서드 호출 시 자식메서드 우선
부모 클래스
class Point{
int x;
int y;
String getLocation(){
return "x : " + x + ", y : " + y;
}
}
자식 클래스
class Point3D extends Point{
int z;
String getLocation(){
return "x : " + x + ", y : " + y + ", z : " + z;
}
}
class Point1
{
int x;
int y;
String getLocation()
{
return "x : " + x + ", y: " + y;
}
}
class Point3D extends Point1
{
int z;
String getLocation()
{
return "x : " + x + ", y : " + y + ", z : " + z;
}
}
public class PointSample {
public static void main(String[] args) {
//오버라이딩
Point3D p3 = new Point3D();
p3.x = 10;
p3.y = 20;
p3.z = 30;
System.out.println(p3.getLocation());
}
}
출력

접근제어자
맴버 또는 클래스의 사용되어 해당하는 맴버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할
private : 같은 클래스 내에서만 접근가능
default : 같은 패키지 내에서만 접근가능 (접근제어자를 따로 설정안해놓으면 기본적으로 default로 설정)
protected : 같은 패키지 내에서와 다른 패키지의 자손 클래스에서 접근가능
public : 접근제한 없음
대상에 따라 사용할 수 있는 접근 제어자
클래스 : public, (default)
메서드 : public, protected,(default), private
멤버변수 : public, protected,(default), private
지역변수 : 없음
접근 제어자 사용이유
- 외부로 부터 데이터 보호
- 내부적으로 사용되는 부분을 감추기 위해
import java.util.*;
class Person3
{
private String name;
private int age;
private String job;
Scanner sc = new Scanner(System.in);
Person3()
{
this(" " , 0 , " ");
}
Person3(String name, int age, String job)
{
this.name = name;
this.age = age;
this.job = job;
}
public String getName() {
return name;
}
public void setName() {
String name = sc.next();
this.name = name;
}
public int getAge() {
return age;
}
public void setAge() {
int age = sc.nextInt();
this.age = age;
}
public String getJob() {
return job;
}
public void setJob() {
String job = sc.next();
this.job = job;
}
public String toString()
{
return name + "님의 나이는 " + age + "살이며, 직업은 " + job + "입니다.";
}
public boolean nameEquals()
{
if(getName().equals("끝"))
{
System.out.println("프로그램을 종료합니다.");
return false;
}
return true;
}
}
public class MySample1121_4 {
public static void main(String[] args) {
/*
* 이름, 나이, 직업을 입력받아 입력받은 값을 화면에 출력하며, 이름에 "끝"이 입력되면 종료되는 프로그램 작성
* 입력예)
* 이름은>홍길동
* 나이는>22
* 직업은>프로그래머
*
* 출력예)
* 홍길동님의 나이는 22살이며, 직업은 프로그래머 입니다.
*
* 입력예)
* 이름은>끝
* 나이는>25
* 직업은>백수
*
* 출력예)
* 프로그램은 종료합니다.
*/
Person3 p = new Person3();
while(true)
{
System.out.print("이름은>");
// p.name = "홍길동"; // private 접근제어자가 붙은 변수는 다른 클래스에서 직접 변경이 불가능 하다
p.setName();
System.out.print("나이는>");
p.setAge();
System.out.print("직업은>");
p.setJob();
if(!p.nameEquals())
break;
System.out.println(p);
}
}
}
출력

'JAVA' 카테고리의 다른 글
| 2022.11.23 20일차 Vector클래스, 추상화클래스 (0) | 2022.11.23 |
|---|---|
| 2022.11.22 JAVA 19일차 다형성 (0) | 2022.11.22 |
| 2022.11.18 JAVA 17일차 객체지향 응용문제(상수) (0) | 2022.11.22 |
| 2022.11.17 JAVA 16일차 생성자2, 상속 (0) | 2022.11.22 |
| 2022.11.16 JAVA 15일차 생성자 (0) | 2022.11.22 |