zoukankan      html  css  js  c++  java
  • Java自学课程笔记3.1

    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
    
        
  • 相关阅读:
    SVN 主干(trunk)、分支(branch )、标记(tag)
    HTML的img标签:alt属性和title属性
    HTML的img标签:alt属性和title属性
    Eclipse远程调试Tomcat
    Eclipse远程调试Tomcat
    使用 Eclipse 远程调试 Java 应用程序
    使用 Eclipse 远程调试 Java 应用程序
    14.Windows 与 Linux 文件共享
    13.远程登录 Linux
    12.Linux 网络配置
  • 原文地址:https://www.cnblogs.com/yinjx/p/14647871.html
Copyright © 2011-2022 走看看