• JAVA学习day03


    一、Super详解

    Person.java

        protected String name = "人类";
    

    Student.java

        private String name = "学生";
    
        public void test(String name){
            System.out.println(name);
            System.out.println(this.name);
            System.out.println(super.name);
        }
    
    

    Test.java

        public static void main(String[] args) {
            Student student = new Student();
            student.test("HF");
        }
    
    输出:
    HF
    学生
    人类

    注:

    • 用super也可以调用父类的方法
    • 实例化子类时会自动调用super()对父类进行实例化,如果手写,必须在第一行。
    • Super和This不能同时调用构造方法。

    二、方法重写和多态

    Static:Static是类的方法;没有Static,方法是实例化了的对象的方法!!!

    Test1:

    B.java

    public class B{
      public static void test(){
      System.out.println("B=>Test()")
      }
    }
    

    A.java

    public class A extends B{
      public static void test(){
      System.out.println("A=>Test()")
      }
    }
    

    Application.java

    public class Application() {
        public static void main(String[] args) {
            A a = new A();
    
            a.test();
    
            B b = new A();
            b.test();
    
        }
    }
    

    此时输出为:
    A=>test()
    B=>test()

    Test2:

    B.java

    public class B {
        public void test(){
            System.out.println("B=>test()");
        }
    }
    

    A.java

    public class A extends B{
    
        @Override
        
        public void test() {
            System.out.println("A=>test()");
        }
    }
    

    Application.java

    public static void main(String[] args) {
            A a = new A();
    
            a.test();
    
            B b = new A();
            b.test();
    
        }
    

    此时输出为:
    A=>test()
    A=>test()

    总结:

    1. 多态
      b属于B类,但是是用A new的对象,所以当test()都为static时,b.test()调用的是类的对象,所以结果为B=>test() ;当test()被重写之后,调用的是对象的方法,因为是A new出来的对象,所以结果为A=>test()
    2. 方法重写
    • 方法名必须相同
    • 参数列表必须相同
    • 修饰符:范围可以扩大但不能缩小: Public>Protected>Default>Private
    • 抛出的异常:范围,可以被缩小,但不能被扩大:ClassNotFoundException --> Exception(大)

    为什么需要重写?

    • 父类功能,子类不一定需要,或者不一定满足!
  • 相关阅读:
    读取exec返回值
    List
    面向对象设计原则
    CascadingDropDown省市县无刷新联动
    读写配置文件app.config
    变向实现动态水晶报表
    JS验证是否日期格式
    C#中调用API(转)
    (转自老赵Jeffrey Zhao)The status code returned from the server was: 12031”。(转)
    利用Javascript的“函数重载”实现自定义Alert样式
  • 原文地址:https://www.cnblogs.com/ebym/p/15651033.html
Copyright © 2020-2023  润新知