• JAVA构造器,重载与重写


      1. java构造器

      构造器也叫构造方法(constructor), 用于对象初始化. 构造器是一个创建对象时被自动创建的特殊方法,目的是对象的初始化. 构造器 的名称与类的名称一致. JAVA通过new关键子来调用构造器,从而返回该类的实例,是一种特殊的方法.

      备注要点:

      a. 通过new关键字来调用

      b. 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型是本类), 不能在构造器使用return返回某个值.

      c. 如果没有我们定义构造器,则编译器会自动定义一个无参构造器. 如果已定义构造器,则不会自动添加

      d. 构造器的方法名必须与类名一致. 

      举例一: 说明构造器的用法

    public class Y_test1 {
        public Y_test1(){
            System.out.println("无参构造器");
        }
        
        public Y_test1(int i){
            System.out.println("有参构造器");
        }
        
        public static void main(String[] args) {
            System.out.println("测试构造器");
            Y_test1 t = new Y_test1();
        }
    }

      打印结果

    测试构造器
    无参构造器

      2. java重载与重写

      在举例一中, 我们使用类一个特殊用法, 重载,这个在javascript中没有的,当然是java先有的重载.那么,什么是重载? 如果同一个类中包含了两个或者两个以上方法名相同,方法参数个数,顺序或者类型不同的方法则称为重载. 重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同类型的参数个数或者类型. 重载是一个类中多态行的表现. 举例一中构造器就用了重载, 无参构造器和有参构造器. 

      提及重载, 另一个与其名字相近的是重写(Overriding)

      a) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。

      b) 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

      c) 子类函数的访问修饰权限不能少于父类的;

      没有重写举例二

    package cn.sxt.oop;
    
    public class TestObject {
        public static void main(String[] args) {
            Object obj = new Object();
            
            TestObject o = new TestObject();
            System.out.println(o.toString());
        }
    }

      打印

    cn.sxt.oop.TestObject@7852e922

      有重写举例三

    package cn.sxt.oop;
    
    public class TestObject {
        public static void main(String[] args) {
            Object obj = new Object();
            
            TestObject o = new TestObject();
            System.out.println(o.toString());
        }
        // 所有对象都是继承字Object,所以开发重写Objecy方法
        public String toString(){
            return "返回子类重写";
        }
    }

      打印

    返回子类重写

      对比重载与重写, 总结:

    比较 重载 重写
    名称 Oveload Override
    函数签名 只要求函数的参数个数或类型不一致,对返回值没要求 函数的参数个数、类型、返回值都必须完全一样。
    作用 同一个类或者具有继承关系的两个类中 只能发生在继承关系的两个类中
    访问权限 没有限制 子类覆写方法的访问权限必须大于或等于父类的方法的访问权限

      

      

      

  • 相关阅读:
    【MyBatis】Inappropriate OGNL expression
    【java】前补零
    【js】前补零
    【Java】导出excel.xlsx
    【插件】fileinput
    【前端】WebSocket is already in CLOSING or CLOSED state?
    【HTML】input标签添加提示内容
    学习问题记录 -- 对象和引用
    八数码难题
    Java 逻辑运算符 & 与 &&的区别
  • 原文地址:https://www.cnblogs.com/yyy6/p/8976201.html
Copyright © 2020-2023  润新知