`
飞翔的猪
  • 浏览: 14207 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

重写Object类中equals()方法时,遇到的权限问题

 
阅读更多
public class StudentTest
{
String name;
int age;
public boolean equals(Object obj)
{
StudentTest st = null;
if (obj instanceof StudentTest)
st = (StudentTest)obj;
else
return false;
if(st.name == this.name && st.age == this.age)
return true;
else
return false;
}

public static void main(String [] args)
{
StudentTest p = new StudentTest();
StudentTest q = new StudentTest();

p.name = "王珊珊";
p.age = 13;

q.name = "王珊珊";
q.age = 13;

if (p.equals(q))
{
System.out.println("P与q相等!");
}
else
{
System.out.println("P与q不相等!");
}

}
}


解决:
boolean equals(Object obj)
改成:
public boolean equals(Object obj)

不加修饰符,默认的访问权限是包级权限,比public(公有)权限低
根类Object里的equals方法是public(公有)权限
不允许用低的访问权限去覆盖高的权限
所以出这个问题
分享到:
评论

相关推荐

    重写equals方法

    3. 访问控制权限可以不同,但是子类重写父类的方法时,访问控制权限必须大于父类。 例如,public boolean equals(Object o) 是一个正确的重写方法,而 public boolean equals(String o) 是一个重载方法,而不是重写...

    day004 面向对象3-继承、抽象和方法的重写.doc

    四、Object 类中方法重写 Object 类是 Java 中所有类的父类,它提供了几个重要的方法,例如 equals()、hashCode() 和 toString() 等。这些方法可以被子类重写,以满足子类的需求。 五、继承的注意事项 继承时需要...

    Java Object类详解_动力节点Java学院整理

    所以,要想在ObjectTest类中调用clone()方法,你需要创建一个继承自Object的类,并在子类中调用clone()。这是Java中关于权限修饰符的一个重要概念。 Java Object类是所有Java类的根,它定义了一些基本的方法,这些...

    Java考试题.pdf

    修饰方法时,方法不能被重写;修饰变量时,变量变为常量,一旦赋值就不能更改。 - `protected`:提供了一种访问控制,允许包内及子类访问。它可以修饰类、变量和方法,提供了比包访问权限更高级别的保护。 - `...

    java笔记se02.docx

    Java笔记主要涵盖了包(package)的使用、访问控制权限以及Object类中的`toString()`和`equals()`方法。以下是对这些知识点的详细说明: 1. **包(package)** - **使用目的**:Java中的包机制是为了更好地组织和管理...

    qfedu多态 Object,final

    - **重写(Override)**:当子类中需要覆盖父类的方法时,可以通过重写实现。重写时必须保证方法名、参数列表以及返回类型与父类方法完全一致,并且子类方法的访问权限不得低于父类方法。 ```java public class ...

    java进阶.docx

    Java 进阶 Java 是一种跨平台的编程语言,具有三大特性:封装、继承和多态。 封装 ...Object 中有多个公用方法,例如 clone、equals、hashCode 等。这些方法可以被子类重写,以实现不同的行为。

    object 面试题

    43. static 关键字在定义方法和属性中的作用:表示静态成员、可以在类加载时执行静态初始化块。 44. 子类构造方法和父类的构造方法的关系:子类构造方法调用父类的构造方法。 45. 在 static 方法内使用 this 或者 ...

    JAVA判断题含答案.doc

    12. `equals()`方法:对于非Object类的重写,`equals()`通常会比较对象内容,所以描述正确。 13. 属性访问:不加访问控制修饰符的属性默认为包访问,只允许同包访问,描述正确。 14. File类的`equals()`:File类...

    2024秋招java开发、测试开发最全八股文

    Object类的equals方法默认行为与==相同,但很多类如String重写了equals方法,以比较对象内容而非引用。同时,如果重写了equals,通常也需要重写hashCode方法以保持一致性。 4. 异常处理机制: 异常处理通过try-...

    Java学习笔记,面向对象深化

    - 当查找一个属性或方法时,首先在当前类中查找,若找不到,会沿着继承树向上查找,直到找到`Object`类。如果在所有祖先类中都找不到,编译器将报错。 了解并熟练掌握这些面向对象的概念和机制,是成为Java开发者...

    JAVA学习笔记

    在处理对象时,打印对象通常会调用toString方法,该方法在Object类中定义,但可以被子类覆盖以返回对象的字符串表示。在Java中,比较对象相等性通常使用equals方法而不是==运算符,后者比较的是引用是否指向同一对象...

    java秋招笔试面试知识点总结

    Object类中定义了一些基本的方法,如equals()、toString()、getClass()、hashCode()等,这些方法可以被子类重写以提供更具体的行为。 12. 内部类:Java允许在一个类的内部定义一个类,这样的类称为内部类。内部类...

    java学科面试宝典v7.0.pdf

    - equals方法:是Object类中的一个方法,用于比较两个对象的内容是否相等。如果类没有覆盖equals()方法,则通过equals()比较两个对象时,等同于用“==”比较它们的引用。如果类覆盖了equals()方法,则比较的是对象...

    第4章(类的重用).ppt

    2. **Object类**:所有Java类的顶级父类,提供了诸如`equals()`、`hashCode()`和`toString()`等基本方法。任何自定义类如果没有显式声明父类,那么默认继承自`Object`类。 3. **终结类与终结方法**:终结类(final ...

    Java基础入门教程 第5章 Java基础类的应用(共42页).ppt

    Object类是所有Java类的父类,它包含了一些通用的方法,如`toString()`用于返回对象的字符串表示,`getClass()`获取对象的类信息,`equals()`比较对象是否相等,以及`hashCode()`用于对象的哈希计算。 在Java中,...

    Java语言程序设计教程(Java 7)——入门与提高篇04

    在重写方法时,子类不能改变方法的返回类型和访问权限。 - **构造方法与继承**:虽然子类可以继承父类的构造方法,但不能覆盖它。在创建子类实例时,会首先调用父类的构造方法。 ### final修饰符和abstract修饰符 ...

Global site tag (gtag.js) - Google Analytics