zoukankan      html  css  js  c++  java
  • 构造方法浅析

    1  无参构造与有参构造

    先让我们了解一下有参构造方法和无参构造方法,见名思意,有参构造就是有参数传递,无参构造就是没有参数传递。

    参考代码如下:

     1 class People{//定义一个人类
     2     String name;//姓名
     3     char gender;//性别
     4     int date;//出生日期
     5     People(){//定义无参构造方法
     6         System.out.println("这是无参构造函数,张三出生了");//输出提示
     7         this.name="张三";//在无参构造中初始化属性
     8         this.gender='男';//在无参构造中初始化属性
     9         this.date=19940216;//在无参构造中初始化属性
    10     }
    11     People(String name,char gender,int date){//定义有参构造方法
    12         System.out.println("这是有参构造函数,"+name+"出生了");//输出提示
    13         this.name=name;//在有参构造方法中将形参传给实参
    14         this.gender=gender;//在有参构造方法中将形参传给实参
    15         this.date=date;//在有参构造方法中将形参传给实参
    16     }
    17 }

    从以上代码可以看出,在创建具体对象时,无参构造方法的初始化在代码中固定,当然,可以不要这段代码,在创建对象时根据“类名.属性”定义,但是较为麻烦,这也是有参构造函数的最大优势之一。

    2  子类构造函数常见问题分析

    接下来我们依据上面的People类来创建一个Student子类,参考代码如下:

     1 class Student extends People{//定义一个学生类,继承人类
     2     int xuehao;//再定义一个新的属性,学号
     3     Student(String name,char gender,int date,int xuehao){//定义有参构造方法
     4         System.out.println("这是有参构造函数,继承了People类,学生"+name+"来学校了");//输出提示
     5         this.name=name;//在有参构造方法中将形参传给实参
     6         this.gender=gender;//在有参构造方法中将形参传给实参
     7         this.date=date;//在有参构造方法中将形参传给实参
     8         this.xuehao=xuehao;//在有参构造方法中将形参传给实参
     9     }
    10 }

    【注意】在创建子类时,可能会因为子类的构造函数而出现编译不通过的情况。

    比如:

    1 Student student=new Student();

    若要创建一个子类的对象,则要调用子类构造函数。在子类构造函数(无参、有参)的第一行默认调用父类无参构造函数,若父类中没有无参构造函数,子类必须显示调用父类的有参构造函数(super)。

    解决方法:

    1. 在父类中,加入无参构造函数
    2. 移除自定义的构造函数
    3. 子类的构造函数第一行中加入super(value)

    【注】可以使用“super.属性”或“super.方法”调用父类的属性或方法。

    至于super方法怎么用,接着看以下代码:

     1 class People{
     2     String name;
     3     //People(){};//无参构造
     4     People(String name){//有参构造
     5         this.name=name;
     6     }
     7 }
     8 class Student extends People{
     9     int xuehao;
    10     Student(String name,int xuehao){
    11         super(name);//调用父类有参构造
    12         this.xuehao=xuehao;
    13     }
    14 }

    看明白了吗?应该是明白了。

    3    创建类对象数组

    接下来我们来谈一谈创建对象的问题,有时候我们需要使用一个类的多个对象,比如说学生类,如果一个接一个的创建学生类,不是不可取,只是很麻烦,较占空间,最为关键的是以后若想增加或删除某个对象时很麻烦,特别是在写一个学生成绩管理系统之类的时候,无路可走。故我们要用另一种方法创建一个类对象:数组对象。这种方法常与有参构造相结合使用,因为初始化的时候很方便!

    参考代码如下:

     1 Student S[] = new Student[50];//定义一个Student数组对象,可以存储50位同学的信息
     2 S[0]=new Student("张一","男",96,67,85,8000);//初始化第一位学生
     3 S[1]=new Student("张二","女",46,56,84,8001);//初始化第二位学生
     4 S[2]=new Student("张三","男",58,61,86,8002);//初始化第三位学生
     5 S[3]=new Student("张四","女",84,67,23,8003);//初始化第四位学生
     6 S[4]=new Student("张五","男",65,94,56,8004);//初始化第五位学生
     7 S[5]=new Student("张六","女",43,75,98,8005);//初始化第六位学生
     8 S[6]=new Student("张七","女",67,45,78,8006);//初始化第七位学生
     9 S[7]=new Student("张八","男",82,65,94,8007);//初始化第八位学生
    10 S[8]=new Student("张九","女",91,23,28,8008);//初始化第九位学生
    11 S[9]=new Student("张十","男",98,84,64,8009);//初始化第十位学生

    使用这种定义,在新增学生信息的时候,只需要控制数组的下标即可,非常方便!

    多嘴一句,double也是一个类对象,如下:

    1 double a[]=new double[100];//创建一个double类数组
  • 相关阅读:
    Python基础—字符串
    Python基础—函数
    2019918练手爬虫日记
    python基础—列表
    Python urllib详解
    安装TesseractOCR显示无效的路径
    Sql server 关于ID突然自增问题解决方案
    Sql server 登陆后无法找不到数据库怎么解决
    Python常用语句及流程控制
    jquery cookie操作
  • 原文地址:https://www.cnblogs.com/qijunhui/p/8284300.html
Copyright © 2011-2022 走看看