이 기사에서는 java에 대한 관련 지식을 제공합니다. 하위 클래스가 상위 클래스를 상속한 후 상위 클래스와 동일한 이름과 매개변수를 사용하여 하위 클래스에 메소드를 작성하여 동일한 메소드를 구현할 수 있습니다. 상위 클래스의 이름과 동일한 매개변수. 메소드 덮어쓰기, 우리는 이 프로세스를 메소드 재작성이라고 부릅니다. 살펴보겠습니다. 모든 사람에게 도움이 되기를 바랍니다.
추천 학습: "java 비디오 튜토리얼"
하위 클래스가 상위 클래스를 상속받은 후 상위 클래스와 동일한 이름과 매개변수를 사용하여 하위 클래스에 메소드를 작성할 수 있습니다. 동일한 이름과 매개변수로 메서드를 재정의하려면 이 프로세스를 재정의라고 합니다.
2.2 질문 및 분석
예를 들어 상위 클래스인 Peple과 하위 클래스인 Chinese가 있습니다. 상위 클래스에는 말하는 사람을 출력하는 say() 메서드가 있지만 내가 원할 때 서브클래스를 호출하면 출력이 중국어로 나옵니다. 물론 메소드를 직접 호출하는 것은 작동하지 않으므로 서브클래스에서 say 메소드를 다시 작성해야 합니다
2.3 샘플 코드
People 클래스
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public void say(){ System.out.println("人在说话"); } }
중국어 클래스
public class Chinese extends Peple{ public Chinese() { } @Override public void say() { System.out.println("中国人在说话"); } }
Test03 클래스
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.say(); //当进行方法重写时,调用的是子类的say()方法 } }re2.4 샘플 코드 실행 스크린 샷
3. 상위 클래스 메서드의 접근 권한보다 크거나 같음
@Override 权限修饰符 返回值类型 方法名(形参列表){ //子类重写的方法的权限修饰符的访问权限必须大于等于父类的,但是父类不能是private //当父类的返回值类型为基本数据类型或者为void时,子类方法的返回值类型也应该为对应的基本数据类型或者void }중국어 클래스
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } //没有写访问权限的话,默认是default访问权限 void say(){ System.out.println("人在说话"); } }
public class Chinese extends Peple{ public Chinese(){ } //父类say方法的访问权限为default,子类say方法的访问权限为public, // 符合子类方法访问权限大于等于父类方法访问权限的要求 @Override public void say() { System.out.println("中国人在说话"); } }b 스크린샷을 실행하는 샘플 코드
3.2.2 상위 클래스 메서드 반환 값 유형이 기본 데이터 유형인 경우 하위 클래스에 의해 재정의된 메서드의 반환 값 유형도 해당 기본 데이터 유형입니다
a 샘플 코드
People 클래스
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.say(); } }
중국어 클래스
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public double add(int a,int b){ return a+b; } }
Test03 class
public class Chinese extends Peple{ public Chinese(){ } @Override public double add(int a,int b) { return a+b+1; } }
b 샘플 코드 실행 스크린샷
3.2.3 상위 클래스 메서드의 반환 값 유형이 void이면 하위 클래스에서 재정의된 메서드의 반환 값 유형도 void
a 샘플 코드
People 클래스
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); System.out.println("求和之和再加上1的结果为: "+c.add(2, 3)); } }
중국어 클래스
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public void eat(){ System.out.println("人的主食一般是熟食"); } }
Test03 클래스
public class Chinese extends Peple{ public Chinese(){ } @Override public void eat() { System.out.println("中国人的主食是大米或者小麦"); } }
b 스크린샷을 실행하는 샘플 코드
3.2.4 상위 클래스의 메서드가 static으로 수정되면 하위 클래스는 해당 메서드를 재정의할 수 없습니다
a 오류 샘플 코드
People 클래스
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.eat(); } }
중국어 클래스
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public static void eat(){ System.out.println("人的主食一般是熟食"); } }
Test03 클래스
public class Chinese extends Peple{ public Chinese(){ } @Override public void eat() { System.out.println("中国人的主食是大米或者小麦"); } }
b 샘플 코드 실행 스크린샷
강제 실행 후 표시되는 오류 메시지
3.3 메소드 재사용 작성을 위한 몇 가지 팁
3.3.1 메소드 복사Steps
1 먼저 하위 클래스에서 재정의해야 하는 상위 클래스의 메소드를 직접 복사(Ctrl+C)하세요
2. 하위 클래스에 붙여넣기(Ctrl+V)
3.3.3 단축키 방법
단계
1. 다시 작성된 방법으로 마우스를 이동하면 생성된 위치
2. 키보드의 Alt 키와 Insert 키를 동시에 누릅니다.
3. 팝업 상자에서 Override Methods
를 선택합니다. 4. 인터페이스에서 하위 클래스로 재정의해야 하는 메서드를 선택합니다. 확인 버튼을 누르면 필요한 재정의 메서드가 생성됩니다
6. 재정의된 메서드에서 자동으로 생성된 첫 번째 줄을 제거한 다음 메서드 본문에 해당 문을 작성합니다.
추천 학습: "
java 비디오 튜토리얼》
위 내용은 Java의 메소드 재정의에 대한 완전한 숙달의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!