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(公有)权限
不允许用低的访问权限去覆盖高的权限
所以出这个问题
分享到:
相关推荐
3. 访问控制权限可以不同,但是子类重写父类的方法时,访问控制权限必须大于父类。 例如,public boolean equals(Object o) 是一个正确的重写方法,而 public boolean equals(String o) 是一个重载方法,而不是重写...
四、Object 类中方法重写 Object 类是 Java 中所有类的父类,它提供了几个重要的方法,例如 equals()、hashCode() 和 toString() 等。这些方法可以被子类重写,以满足子类的需求。 五、继承的注意事项 继承时需要...
所以,要想在ObjectTest类中调用clone()方法,你需要创建一个继承自Object的类,并在子类中调用clone()。这是Java中关于权限修饰符的一个重要概念。 Java Object类是所有Java类的根,它定义了一些基本的方法,这些...
修饰方法时,方法不能被重写;修饰变量时,变量变为常量,一旦赋值就不能更改。 - `protected`:提供了一种访问控制,允许包内及子类访问。它可以修饰类、变量和方法,提供了比包访问权限更高级别的保护。 - `...
Java笔记主要涵盖了包(package)的使用、访问控制权限以及Object类中的`toString()`和`equals()`方法。以下是对这些知识点的详细说明: 1. **包(package)** - **使用目的**:Java中的包机制是为了更好地组织和管理...
- **重写(Override)**:当子类中需要覆盖父类的方法时,可以通过重写实现。重写时必须保证方法名、参数列表以及返回类型与父类方法完全一致,并且子类方法的访问权限不得低于父类方法。 ```java public class ...
Java 进阶 Java 是一种跨平台的编程语言,具有三大特性:封装、继承和多态。 封装 ...Object 中有多个公用方法,例如 clone、equals、hashCode 等。这些方法可以被子类重写,以实现不同的行为。
43. static 关键字在定义方法和属性中的作用:表示静态成员、可以在类加载时执行静态初始化块。 44. 子类构造方法和父类的构造方法的关系:子类构造方法调用父类的构造方法。 45. 在 static 方法内使用 this 或者 ...
12. `equals()`方法:对于非Object类的重写,`equals()`通常会比较对象内容,所以描述正确。 13. 属性访问:不加访问控制修饰符的属性默认为包访问,只允许同包访问,描述正确。 14. File类的`equals()`:File类...
Object类的equals方法默认行为与==相同,但很多类如String重写了equals方法,以比较对象内容而非引用。同时,如果重写了equals,通常也需要重写hashCode方法以保持一致性。 4. 异常处理机制: 异常处理通过try-...
- 当查找一个属性或方法时,首先在当前类中查找,若找不到,会沿着继承树向上查找,直到找到`Object`类。如果在所有祖先类中都找不到,编译器将报错。 了解并熟练掌握这些面向对象的概念和机制,是成为Java开发者...
在处理对象时,打印对象通常会调用toString方法,该方法在Object类中定义,但可以被子类覆盖以返回对象的字符串表示。在Java中,比较对象相等性通常使用equals方法而不是==运算符,后者比较的是引用是否指向同一对象...
Object类中定义了一些基本的方法,如equals()、toString()、getClass()、hashCode()等,这些方法可以被子类重写以提供更具体的行为。 12. 内部类:Java允许在一个类的内部定义一个类,这样的类称为内部类。内部类...
- equals方法:是Object类中的一个方法,用于比较两个对象的内容是否相等。如果类没有覆盖equals()方法,则通过equals()比较两个对象时,等同于用“==”比较它们的引用。如果类覆盖了equals()方法,则比较的是对象...
2. **Object类**:所有Java类的顶级父类,提供了诸如`equals()`、`hashCode()`和`toString()`等基本方法。任何自定义类如果没有显式声明父类,那么默认继承自`Object`类。 3. **终结类与终结方法**:终结类(final ...
Object类是所有Java类的父类,它包含了一些通用的方法,如`toString()`用于返回对象的字符串表示,`getClass()`获取对象的类信息,`equals()`比较对象是否相等,以及`hashCode()`用于对象的哈希计算。 在Java中,...
在重写方法时,子类不能改变方法的返回类型和访问权限。 - **构造方法与继承**:虽然子类可以继承父类的构造方法,但不能覆盖它。在创建子类实例时,会首先调用父类的构造方法。 ### final修饰符和abstract修饰符 ...