2021年2月20日16点16分
JAVA自学课程笔记3.1
Test1.java:
class A{
public void f(){
System.out.println("AAA");
}
}
class B extends A{
public void f(){
System.out.println("BBB");
}
public void g(){
System.out.println("CCC");
}
}
public class Test1{
public static void main(String[] args){
B bb = new B();
A aa = new A();
aa = bb;
aa.f();
B bb2 = (B)aa;
bb2.f();
}
}
//运行结果:
BBB
BBB
Test2.java:
class A{
public void f(){
System.out.println("AAA");
}
}
class B extends A{
public void f(){
System.out.println("BBB");
}
public void g(){
System.out.println("CCC");
}
}
public class Test2{
public static void main(String[] args){
B bb = new B();
A aa = new A();
//aa = bb;
aa.f();
bb = (B)aa;
bb.g();
}
}
//运行结果:
AAA
Exception in thread "main" java.lang.ClassCastException: class A cannot be cast to class B (A and B are in unnamed module of loader 'app')
at test1.main(test1.java:23)
Test3.java:
class A{
public void f(){
System.out.println("AAA");
}
}
class B extends A{
public void f(){
System.out.println("BBB");
}
public void g(){
System.out.println("CCC");
}
}
public class Test3{
public static void main(String[] args){
B bb = new B();
A aa = new A();
aa = bb;
aa.f();
bb = (B)aa;
bb.f();
}
}
//运行结果:
BBB
BBB
重写equal方法,通过判断元素的内容是否相同来返回true和false(JAVA自学课程笔记6):
Test4:
class A{
public int i;
public A(int i){
this.i = i;
}
public boolean equals(Object obj){
if(this.i == obj.i)
return true;
else
return false;
}
}
public class Test4{
public static void main(String[] args){
A aa1 = new A(2);
A aa2 = new A(2);
System.out.println(aa1.equals(aa2));
}
}
//输出结果:
编译错误:找不到符号obj.i
原因:父类指向子类之后,无法访问子类所特有的成员。
Test5:
class A{
public int i;
public A(int i){
this.i = i;
}
public boolean equals(Object obj){
A aa = (A)obj; //obj是一切类的父类,当obj指向一个引用equal的子类时(即equal赋值 给obj),父类obj可以通过强制转换被一个子类指向(即赋值给一局部变 量子类)。总而言之,就是父类已经指向子类了,才可以强制转换。
//aa是一个A类的对象,特有i,可以直接使用,可以用来和当前类this的i对比。
if(this.i == aa.i)
return true;
else
return false;
}
}
public class Test5{
public static void main(String[] args){
A aa1 = new A(2);
A aa2 = new A(2);
System.out.println(aa1.equals(aa2));
}
}
//输出结果:
true
JAVA自学课程笔记3.1
最新推荐文章于 2024-09-15 09:47:04 发布
本文介绍了Java中类的继承、方法重写和类型转换的概念,通过Test1到Test5的代码示例展示了不同情况下的运行结果。同时,讲解了equals方法的重写,强调了在比较对象内容时正确使用类型转换的重要性。
摘要由CSDN通过智能技术生成