zoukankan      html  css  js  c++  java
  • 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(大)

    为什么需要重写?

    • 父类功能,子类不一定需要,或者不一定满足!
  • 相关阅读:
    Error: That port is already in use.
    笔记:django is not a registered namespace错误
    笔记:常用SQL语句
    django迁移数据库错误
    OperationalError: (1044, "Access denied for user ''@'localhost' to database 'mydb'")
    笔记:LNMP架构Web的高并发处理
    Debian ZSH解决每次ssh都需要source .bashrc问题
    Django第四天:博客项目实战
    js模板引擎之 Handlebars 基本用法
    创建发布自己的npm包
  • 原文地址:https://www.cnblogs.com/ebym/p/15651033.html
Copyright © 2011-2022 走看看