zoukankan      html  css  js  c++  java
  • 2018-07-25构造方法+This关键字+Super关键字

    //构造方法:创建对象new的时候调用,而且一个对象只调用一次!

    构造方法可以重载!

    构造方法:如果你这个类里面一个构造方法也没有,那么这个类在编译的时候,编译器会自动添加一个空参(NULL/0.0/0),但是如果有一个或者多个构造方法,那么编译器就不添加空参了!

    public Person(){

         //空参构造方法

    }

    //强调:

    在手动添加有参构造方法时,一定要手动添加一个空参构造方法!

    Static修饰的方法,可以直接类名.方法名()调用!

    构造方法格式:

    修饰符 构造方法名(参数列表){

         //用于初始化成员变量!

    }

    构造方法的体现:

    构造方法没有返回值类型!也不需要写返回值,因为它是为构建对象的,对象创建完,方法就执行结束!

    构造方法名称必须和类名保持一致!

    构造方法没有具体的返回值!

    构造方法的细节:

    一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的!

    构造方法是可以被private修饰的,作用:其他类无法创建该类的对象!

    构造方法在对象创建时就执行了,而且只执行一次!

    一般方法是在对象创建后,需要使用时才被对象调用,并可以被多次调用!

    有了构造方法之后,还是会需要Get和Set方法,因为构造方法只能执行一次,想要再次用构造方法赋值只能再创建对象,而Set/Get可以多次赋值调用!

    构造方法之间的调用,可以通过this关键字来完成(Tips:仅限于构造方法之间):

    格式:

    this(参数列表); //通过重载判断调用的是哪个构造方法,并执行该构造方法的方法体!

    //使用this调用构造方法,这个语句必须放在第一行!

    This另一个作用:可以在成员变量名前面加上this.来区别成员变量和局部变量(this代表本类/调用者)!

    package com.oracle.demo03;

    //父类构造方法:

    public class Person {

         public Person(){

             System.out.println("这是父类的构造方法!");

         }

    }

    package com.oracle.demo03;

    public class Student extends Person {

         public Student(){

             //隐式代码

             super();

         }

    }

    package com.oracle.demo03;

    public class Test1 {

         public static void main(String[] args) {

             Student stu=new Student();

         }

    }

    //继承一个类时,构造方法会隐式一个super()

    //有时,父类写了一个带参数列表的构造方法,父类继承时报错,原因是父类写了构造方法,子类继承时不再生成默认空参构造,所以会报错,可以在子类方法体位置写入super(“吉吉国王”,18),或者在父类写一个空参构造!

    Private修饰的成员变量,不能被继承!

    当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法!

    //构造方法只要间接或直接能够调用到父类的构造方法就可以!

    package com.oracle.demo03;

    //父类构造方法:

    public class Person {

         String name;

         int age;

         public Person(){

             System.out.println("这是父类的构造方法!");

         }

    }

    package com.oracle.demo03;

    public class Student extends Person {

         public Student(String name,int age){

             this(name);

             this.age=age;

         }

        

         public Student(String name){

             //这里默认有个super(),所以上方代码this(name)时就已经调用了super!

         }

    }

    /当发生this和super都要在第一行时用这个方法!

    //快捷创建构造方法!

    //谨记:在写有参构造时,也要写上一个无参构造!

    //构造方法默认第一行都是有super()的!

    格式:

    调用本类中的构造方法

    this(实参列表);

    调用父类中的空参数构造方法

    super();

    调用父类中的有参数构造方法

    super(实参列表);

  • 相关阅读:
    机房收费系统总结
    python手记(45)
    Hbase深入学习(二) 安装hbase
    Java异常机制
    MySQL 分析服务器状态
    人生感悟:人生像吃自助餐
    Android使用蓝牙连接adb调试App
    JQuery DataTables 列自己定义数据类型排序
    Android-自己定义图像资源的使用(1)
    11款开放中文分词引擎大比拼
  • 原文地址:https://www.cnblogs.com/postgredingdangniu/p/9369721.html
Copyright © 2011-2022 走看看