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(大)

    为什么需要重写?

    • 父类功能,子类不一定需要,或者不一定满足!
  • 相关阅读:
    IE678下,select 诡异的样式
    跟着我一步一步的搭建一个基于springcloud的微服务实例
    关于Future踩过的坑
    Apache下的SocketClient的使用
    Jaxb处理泛型,转化成xml字符串
    Linux Centos虚拟机扩容
    docker 搭建zookeeper集群和kafka集群
    sysbench 数据库性能测试工具的使用
    docker 容器技术
    自己手写实现Dubbo
  • 原文地址:https://www.cnblogs.com/ebym/p/15651033.html
Copyright © 2011-2022 走看看