Java基础03 构造器与方法重载(转载)
定义构造器
构造器(constructor)是一个方法。像普通方法一样,我们在类中定义构造器。构造器有如下基本特征:
- 构造器的名字和类的名字相同
- 构造器没有返回值
public class Test{
public static void main(String[] args){
Human aPerson = new Human(160);
System.out.println(aPerson.getHeight());
}
}
class Human{
/**
* construnctor
*/
Human(int h){
this.height = h;
System.out.println("I'm born");
}
/**
* accessor
*/
int getHeight(){
return this.height;
}
int height;
}
上面的程序会打印
160
- 为数据成员提供初始值 this.height = h;
- 执行特定的初始操作 System.out.println("I'm born");
初始化方法的优先级
public class Test{
public static void main(String[] args){
Human aPerson = new Human(160);
System.out.println(aPerson.getHeight());
}
}
class Human{
/**
* construnctor
*/
Human(int h){
this.height = h;
}
/**
* accessor
*/
int getHeight(){
return this.height;
}
int height = 170;
}
运行结果为:
160
对象最终的初始化值与构建方法中的值一致。因此:
构建方法 > 显式初始值 > 默认初始值 (事实上优先级与初始化时的执行顺序有关)
方法重载
public class Test{
public static void main(String[] args){
Human neZha = new Human(150,"shit");
System.out.println(neZha.getHeight());
}
}
class Human{
/**
* construnctor 1
*/
Human(int h){
this.height = h;
System.out.println("I'm born");
}
/**
* construnctor 2
*/
Human(int h,String s){
this.height = h;
System.out.println("Ne Zha:I'm born,"+s);
}
/**
* accessor
*/
int getHeight(){
return this.height;
}
int height ;
}
运行结果:
Ne Zha: I'm born, shit
150
上面定义了两个构造器,名字都是Human。两个构造器有不同的参数列表。
在使用new创建对象时,Java会根据提供的参数来决定构建哪一个构造器。比如在构建neZha时,我们提供了两个参数: 整数150和字符串"shit",这对应第二个构建方法的参数列表,所以Java会调用第二个构建方法。
public class Test{
public static void main(String[] args){
Human aPerson = new Human();
aPerson.breath(10);
}
}
class Human{
/**
* breath() 1
*/
void breath(){
System.out.println("hu..hu..");
}
/**
* breath() 2
*/
void breath(int rep){
int i;
for(i = 0;i<rep;i++){
System.out.println("lu..lu..");
}
}
int height ;
}
运行结果:
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
总结
constructor特征: 与类同名,无返回值
constructor目的: 初始化,初始操作
方法重载: 方法名 + 参数列表 -> 实际调用哪一个方法
最新文章
- 详解web容器 - Jetty与Tomcat孰强孰弱
- 设计模式之里氏代换原则(LSP)
- 数值分析之奇异值分解(SVD)篇
- jquery 实现 返回顶部
- 《Linux内核设计与实现》课本第一章&;第二章学习笔记
- 下一个系列学习列表Spring.net+NHibernate+MVC
- hdu 2473 并查集
- mvn deploy 报错:Return code is: 400, ReasonPhrase: Bad Request. ->
- 关于Unity的ViewSpace(CameraSpace)的坐标系
- poi大数据将excel2007导入数据库
- 两次fclose引发的血案
- C语言之scarf函数
- php的内置函数debug_backtrace()与get_included_files()跟踪代码调用(Thinkphp框架举例)
- Qt中的ui指针和this指针
- Java 基本文件操作
- WPF DEV dxc:ChartControl 柱状图
- 基于axios创建的实例使用axios.all,报错:this.$http is not a function,但请求成功
- 微信小程序无法获取UnionId的情况及处理
- Android开发 ---Fragment片段布局
- 关于元素设置margin-top能够改变body位置的原因及解决(子元素设置margin-top改变父元素定位)