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
    
        
  • 相关阅读:
    【Linux学习七】软件安装
    【Linux学习六】用户管理
    【Linux学习五】文本处理
    【Linux学习四】正则表达式
    【Linux学习三】VI/VIM全屏文本编辑器
    【Linux学习二】文件系统
    【Linux学习一】命令查看与帮助
    【安装虚拟机四】设置快照和克隆
    【安装虚拟机三】设置Linux IP地址
    SpringBoot之定时任务详解
  • 原文地址:https://www.cnblogs.com/yinjx/p/14647871.html
Copyright © 2011-2022 走看看