> Java > java지도 시간 > Java에서 메소드를 재정의하는 방법은 무엇입니까?

Java에서 메소드를 재정의하는 방법은 무엇입니까?

coldplay.xixi
풀어 주다: 2020-06-24 15:10:46
원래의
5978명이 탐색했습니다.

재작성 방법: 1. [toString()] 메서드는 문자열 형식으로 개체를 반환합니다. 2. [equals()] 메서드는 두 개체의 참조가 동일한지 비교합니다. 코드는 [sq s2 =new sq(5,4);println(s1.equals(s2)].

Java에서 메소드를 재정의하는 방법은 무엇입니까?

Java에서 메소드 재작성 방법:

Java에서 메소드 재작성은 Java 클래스를 기반으로 합니다. 세 가지 주요 중 하나 특징: 상속 없이는 메소드 재작성을 말할 수 없습니다. 메소드 재작성은 프로그램의 상위 클래스 메소드가 하위 클래스의 요구 사항을 충족할 수 없는 경우를 의미합니다. 그렇다면 코드를 통해 메서드를 다시 작성하는 방법은 무엇입니까? 다음 블로거는

(1). get 및 set 메서드 외에도 다각형 클래스를 정의합니다. , 다각형 변의 수를 출력할 수 있는 show 메서드도 있습니다

(2) 다각형 클래스에서 상속된 사각형 클래스를 정의합니다

class Polygon{
//属性
private int number_side;
//构造器
public Polygon(int number_side) {
super();
this.number_side = number_side;
}
//方法
public int getNumber_side() {
return number_side;
}
public void setNumber_side(int number_side) {
this.number_side = number_side;
}
public void show(){
System.out.println("Number_side is " + this.number_side);
}
}
로그인 후 복사

볼 수 있습니다. 네, 하위 클래스 square에는 여전히 show 메서드가 있습니다. 그러나 메소드의 기능과 설명은 상위 클래스의 show 메소드와 상당히 다릅니다. 왜냐하면 하위 클래스 square에서 하위 클래스 square의 show 메소드의 기능은 반대쪽을 구현할 수 있어야 하기 때문입니다. 숫자와 변 길이의 출력을 구현해야 하므로 현재 부모 클래스의 show 메서드는 하위 클래스의 요구 사항을 충족할 수 없습니다. 개발자는 하위 클래스의 요구 사항을 충족하기 위해 show 메서드를 다시 작성해야 합니다.

 실제 개발 과정에서 메소드 재작성이 적용되는 상황은 많이 있습니다. 다음으로 이 글에서는 좀 더 일반적으로 사용되는 메소드 재작성을 나열하겠습니다.

 Java의 java.lang 패키지에는 Object라는 클래스가 있습니다. Object는 특별한 클래스입니다. 이 클래스는 모든 클래스의 상위 클래스입니다. 클래스를 생성할 때 생성한 클래스에서 상속하도록 선언하지 않으면 Object에서 상속됩니다. Object 클래스에는 일반적으로 사용되는 두 가지 메서드가 있습니다. 1. toString() 메서드. 이 두 메서드는 개발자가 만든 클래스에서 자주 사용됩니다. toString() 메서드

toString() 메서드는 문자열 형식으로 개체를 반환합니다. 예:

class square extends Polygon{
//属性
private double length; 
//构造器
public square(double length, int number_side) {
super(number_side);
this.length = length;
}
//方法
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
//输出边数和边长
public void show(){
System.out.println("This is a square");
super.show();
System.out.println("Length is " + this.length);
}
}
로그인 후 복사
여기에서 호출되는 toString()</code. > 메소드는 Object 클래스의 <code>toString() 메소드입니다

Java에서 메소드를 재정의하는 방법은 무엇입니까?

toString()方法的功能是将一个对象以字符串的形式返回。例如:

Polygon p = new Polygon(3);
System.out.println(p.toString());
로그인 후 복사

这里调用的toString()方法是Object类中的toString()方法。

Java에서 메소드를 재정의하는 방법은 무엇입니까?

输出为:

Java에서 메소드를 재정의하는 방법은 무엇입니까?

由此可见:当调用Object类中的toString()方法时返回的是一个字符串形式的对象,即该对象的地址。

在实际的应用中通常重写toString()方法,为对象提供一个特定的字符串输出模式,例如:

public class Test {
public static void main(String[] args) {
Polygon p = new Polygon(3);
System.out.println(p.toString());
}
}
class Polygon{
//属性
private int number_side;
//构造器
public Polygon(int number_side) {
super();
this.number_side = number_side;
}
//..................................此处省略其他无关的方法
@Override
public String toString() {
return "Polygon [number_side=" + number_side + "]";
로그인 후 복사

在多边形类Polygon中重写了toString()方法,在main方法中我们创建一个Polygon的对象p并实例化,调用Polygon中重写的toString()方法。

Java에서 메소드를 재정의하는 방법은 무엇입니까?

此时系统输出字符串形式的Polygon类名和其属性。

Java에서 메소드를 재정의하는 방법은 무엇입니까?

2、equals()方法

equals()方法在Object类中的具体体现是怎样的呢?它的功能又是什么呢?老规矩,直接上代码。

public boolean equals(Object obj) {
        return (this == obj);
    }
로그인 후 복사

这是源代码中Object类的equals()方法的具体实现,这样我们便知道,Object中equals()方法的功能是比较两个对象的引用是否相等。当我们调用Object类中的equals()方法时:

public class Test {
public static void main(String[] args) {
square s1 = new square(5.2,4);
square s2 = new square(5.2,4);
System.out.println(s1.equals(s2));
}
}
로그인 후 복사
로그인 후 복사

系统的输出为:

Java에서 메소드를 재정의하는 방법은 무엇입니까?

然后我们重写square类中的equals()方法

public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
square other = (square) obj;
if (Double.doubleToLongBits(length) != Double
.doubleToLongBits(other.length))
return false;
return true;
}
로그인 후 복사

再次调用square类中的equals()方法时

public class Test {
public static void main(String[] args) {
square s1 = new square(5.2,4);
square s2 = new square(5.2,4);
System.out.println(s1.equals(s2));
}
}
로그인 후 복사
로그인 후 복사

系统的输出为:

Java에서 메소드를 재정의하는 방법은 무엇입니까?

  相比之前的fasle,此时输出true是因为重写了equals()方法,而重写的equals()출력은 다음과 같습니다.

🎜Java에서 메소드를 재정의하는 방법은 무엇입니까?🎜🎜Object 클래스의 toString() 메소드를 호출하면 반환되는 것을 볼 수 있습니다. 문자열 형태의 객체, 즉 객체의 주소입니다. 🎜🎜실제 응용 프로그램에서 toString() 메서드는 일반적으로 개체에 대한 특정 문자열 출력 모드를 제공하기 위해 재정의됩니다. 예: 🎜rrreee🎜는 폴리곤 클래스 Polygon()에서 toString을 다시 작성합니다. 메서드, 기본 메서드에서는 Polygon 객체 p를 생성하고 인스턴스화한 다음 Polygon으로 다시 작성된 toString() 메서드를 호출합니다. 🎜🎜Java에서 메소드를 재정의하는 방법은 무엇입니까? 🎜🎜이것 시스템은 Polygon 클래스 이름과 해당 속성을 문자열 형식으로 출력합니다. 🎜🎜Java에서 메소드를 재정의하는 방법은 무엇입니까? 🎜🎜🎜 2. Equals() 메소드🎜🎜🎜equals() Object 클래스의 equals() 메소드의 구체적인 구현은 어떻게 되나요? 그 기능은 무엇입니까? 이전 규칙은 코드로 직접 이동하는 것입니다. 🎜rrreee🎜이것은 소스 코드에서 Object 클래스의 equals() 메서드를 구체적으로 구현한 것이므로, 객체는 두 객체 참조가 동일한지 비교하는 것입니다. Object 클래스에서 equals() 메소드를 호출하면: 🎜rrreee🎜시스템의 출력은 다음과 같습니다: 🎜🎜Java에서 메소드를 재정의하는 방법은 무엇입니까?🎜🎜그런 다음 square 클래스의 equals() 메서드를 재정의합니다. 🎜아아아아 🎜다시 square 클래스 🎜rrreee🎜에서 equals() 메서드를 호출하면 시스템 출력은 다음과 같습니다. 🎜🎜Java에서 메소드를 재정의하는 방법은 무엇입니까?🎜🎜 이전 fasle과 비교하면 이번에 true가 출력되는 이유는 같음( ) 메서드가 다시 작성되고 재정의된 equals() 메서드는 두 개체의 실제 내용, 즉 두 개체의 속성을 비교합니다(참고: equals() 메서드는 의미가 없기 때문에 두 개체의 메서드를 비교하지 마십시오.) 동일하면 true가 출력됩니다. 🎜

 위 내용은 메소드 재작성에 대한 기본 지식과 몇 가지 공통점입니다. 다형성에 관한 장에서 이전에 언급한 블로거도 다형성의 표현입니다. 이제 우리는 이 메서드도 toString()equals() 메서드라는 것을 알 수 있습니다. 사용자 정의 클래스에서 다시 작성하면 Object 클래스와 동일합니다. 완전히 다른 것입니다. 이것은 또한 다형성의 본질에 부합하는 동일한 것의 다른 표현입니다.

추천 튜토리얼: "java 비디오 튜토리얼"

위 내용은 Java에서 메소드를 재정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿