Java中类的构造方法

标签: java构造方法完美解读
4人阅读 评论(0) 收藏 举报
分类:
constructor;构造函数。
  • 1

在创建对象的时候,对象成员可以由构造函数方法进行初始化。

new对象时,都是用构造方法进行实例化的;
例如;Test test = new Test("a");
 //Test("a");其中这个就是构造函数,“a”为构造方法的形参;
  • 1
  • 2
  • 3
构造方法的方法名必须与类名一样。
构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
构造方法不能作用是完成对象的初始化工作,他能够把定义对象时的参数传递给对象的域。
构造方法不能由编程人员调用,而要系统调用。
构造方法可以重载,以参数的个数,类型,或排序顺序区分。
  • 1
  • 2
  • 3
  • 4
  • 5

具体用法,代码实现。

1;单个构造函数方法;’ 
这里写图片描述
这里写图片描述
这里写图片描述

2;多个构造函数方法 
(例子为;带参数与不带参数) 
这里写图片描述

这里写图片描述

3;关于继承类的构造方法的调用; 
先看事例; 
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
我第一次看到结果的时候好惊讶的,怎么都调用了哈。看了知识点才知道。 
在Subtine的主方法中只调用子类构造方法,实例化子类对象并且在子类构造方法中,没有调用父类的构造方法的任何语句。但是在实例化对象时,它相应的调用了父类构造方法,在结果中还可以看到调用构造方法的顺序,首先是顶级,再继续往下直达本身类。也就是说实例化子类的时候,要首先实例化父类对象,然后在实例化子类对象,所以在子类构造方法调用父类构造方法前,父类已经实例化了。 
拓展一下。

package text_4_1;

public class Parent {
    Parent(int a){//就是将无参数构造方法改成有参数的。
        System.out.println("调用父类Parent构造方法" + a);
    }
}

package text_4_1;

public class Subparent extends Parent{
    Subparent(){
        System.out.println("调用子类Subparent的构造方法");
    }
}

package text_4_1;

public class Subtine extends Subparent{
    Subtine(){
        System.out.println("调用子类Subtine构造方法");
    }
}


package text_4_1;

public class Main {
    public static void main(String[] args){
        Subtine subtine = new Subtine();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

这样的代码将会报错;//就是将父类Parent类无参数构造方法改成有参数的。

Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
//隐式的超级构造函数()是未定义的。必须显式地调用另一个构造函数 
  • 1
  • 2

意思就是在子类调用构造函数时,必须先调用父类构造函数,因为无参数的构造函数,编译器会自动调用,也就是第一种情况不会报错。但是有参数的,就必须要利用Super的方法来调用。如果不进行调用那么将会报错。

将Subparent类改成。
package text_4_1;

public class Subparent extends Parent{
    Subparent(){
        super(5);//调用了其父类就不会报错了。
        System.out.println("调用子类Subparent的构造方法");
    }
}
//备注一下,调用父类构造方法就是;super();//就ok了。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

还补充一点,关于构造方法的可扩展性; 
查看过源码的应该都发现过jdk的编码人员会在一个类中建立多个构造方法;然而他的作用就是提高可扩展性; 
这里写图片描述
这么多构造方法,他们之间并且还有联系;通过this()来调用自己类的其他构造方法,来减少代码的复制,增大程序的可读性; 
这里写图片描述
至于怎么来进行封装;举个例子; 
这里写图片描述
这里写图片描述
构造方法的可扩展性就表示在这里; 
可以多多个构造方法;根据不同的参数决定调用哪个;带来很大的可扩展性 
刚试了一下notepad++;然而直接爆出中文乱码,搞了好久才搞清楚; 
这里写图片描述

原因是;国标码和ANSI之间的不兼容; 
这里写图片描述

因为刚学,有什么不足的后期补上。 

望路过的大神,指点一二。


转载自:https://blog.csdn.net/zw1996/article/details/52878270

查看评论

java中类的构造方法与默认构造方法的关系

先看代码1: class Demo_11 { public static void main(String[] args) { A a= new A(); a.print(); } ...
  • yk979057033
  • yk979057033
  • 2015-03-06 14:21:40
  • 1890

Java_基础—File类的概述和构造方法

File类的概述 * File更应该叫做一个路径 * 文件路径或者文件夹路径 * 路径分为绝对路径和相对路径 * 绝对路径是一个固定的路径,从盘符开始 * 相对路径相对于某个位置...
  • SoarFly0807
  • SoarFly0807
  • 2017-07-21 19:41:01
  • 583

Java中String类的构造方法

String类有以下几种用得到的构造方法: 1. 空构造 空构造生成一个空的字符串:函数声明:public String (); 使用: String s1 = new String(); ...
  • liutong1995
  • liutong1995
  • 2016-11-28 16:20:12
  • 1933

IO流_File类的概述和构造方法

package cn.itcast_01; import java.io.File; /* * 我们要想实现IO的操作,就必须知道硬盘上文件的表现形式。 * 而Java就提供了一个类File供...
  • L1585931143
  • L1585931143
  • 2017-01-18 21:49:29
  • 1996

Java中构造方法、实例方法、类方法的区别

1. 构造方法        构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。必须满足以下的语法规则:   方法名与类名相同;不要返回类型(例如return、void等);不能被s...
  • hellohm_ndsc
  • hellohm_ndsc
  • 2014-12-17 10:41:57
  • 6555

Java 类的成员变量和方法以及构造方法

首先要说的是对象,简单的说,对象是对客观世界中的实体的映射。通俗地理解就是客观世界的每一个事物都是一个对象。在java中,我们需要了解到的还有这个对象的属性和方法,即这个是事物的外观、大小等可描述的客...
  • yufeifei_csdn
  • yufeifei_csdn
  • 2015-09-07 21:09:52
  • 1520

Java中的构造方法总结

构造方法和实例方法的区别: 一、主要的区别在于三个方面:修饰符、返回值、命名 1、和实例方法一样,构造器可以有任何访问的修饰符,public、private、protected或者没有修饰符   ,...
  • zmissm
  • zmissm
  • 2013-11-05 19:20:18
  • 26757

java类的封装与构造方法

class Person{ private String name; private int age; public Person(){ //构造方法(无返回值,为新定义的实例化对象的属性赋值...
  • mo1302267724
  • mo1302267724
  • 2017-09-18 22:13:59
  • 399

Java构造方法的相互调用

构造方法
  • lin353809836
  • lin353809836
  • 2017-04-19 10:20:34
  • 5615

java类的构造方法可以直接调用该类中已有的方法。

实例代码如下: 其中构造方法中的调用替换掉原注释的部分。 package test; /**  * @author : suyuyuan * @date :2016年6月22日 下午2:46...
  • suyu_yuan
  • suyu_yuan
  • 2016-06-22 14:54:21
  • 3990
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 1084
    排名: 4万+