在学到对Object类equals方法的重写的时候遇到一个问题总结一下
引用数据类型的强制转换一定要时父子类吗?
一定要是,并且遵循基本数据类型的转换模式,大转小需要强转,小转大可以直接转。
怎么理解方法重写的时候返回值是
return super.equals(obj);
为什么多态的方法形参一定要写个父类的
父类的方法形参在new对象调用的时候可以在形参内new一个要调用的重写的子类的方法
方法的多态性可以用两个方法表现
1.
方法区
Father fa =new son;
fa.fa(调用儿子重写方法)
如
public void fa(){
sout "我是爸爸"
}
pubic void fa(){
sout "我是儿子"
}
父类写一个方法形参列表要是父类
如 public void Method(Father father){
}
方法区调用
Father ff =new Father;
ff.Method(new son());
Object类重写的代码例子
这个重写的代码放在父类或者子类代码都是不一样的,且调用的方式不一样返回的结果也会不一样,总的来说代码有BUG,但能够看出BUG就很棒了。
new子类调用丢父类进去,和new父类调用丢子类进去的结果不一样。
放在子类通过父类调用equals是要强转的比较合理的。
放在父类通过父类调用equals不用强转,需要改代码,也是ok的。
package wrap_overwrite;
public class text_object {
public int age;
public String name;
public text_object(){
}
public text_object(int age, String name){
this.age=age;
this.name=name;
}
public void gettotal(){
System.out.println(age);
System.out.println(name);
}
public void text(text_object obj){
System.out.println("我是爸爸");
}
}
package wrap_overwrite;
public class text_inherite extends text_object {
public int age;
public String name;
public text_inherite(){
}
public text_inherite(int age,String name){
this.name=name;
this.age=age;
}
public void ni(){
}
public void text(text_object obj){
System.out.println("我是儿子");
}
@Override
public boolean equals(Object obj) {
System.out.println("我重写");
if (this == obj) {
System.out.println("我进去了吗");
return true;
}
else if (obj instanceof text_object) {
System.out.println("到得了吗");
text_inherite inherite = (text_inherite) obj;
return inherite.age == this.age && this.name.equals(inherite.name);
}else {
System.out.println("我怎么到这里了");
return false;
}
}
}
package wrap_overwrite;
public class text_user {
public static void main(String[] args) {
text_object objectd =new text_object(20,"kevin");
text_inherite inherite =new text_inherite(20,"kevin");
System.out.println(objectd.equals(inherite));
}
}