构造方法详解

/**

* 构造方法详解

* 声明构造方法的格式为 修饰符+当前类的名称(形参列表){语句块}

* 构造方法通过new 调用

* 构造方法固定返回通过方法运算后的对象 不能更改和定义返回值类型

* 没有定义构造方法的情况下默认构造方法为 类名称(){} 两个括号内均为空值 在new调用时对对象进行运算 无更改 直接返回对象

*/

public class Point {

double x,y;

public void set(int a,int b){

x = a;

y = b;

}

public void print(){

System.out.println(“(“+x+”,”+y+”)”);

}

public static void main(String[] args) {

Point a = new Point();

//通过new调用构造方法Point() 类中没有手动定义构造方法,默认方法中的(){}为空,只返回默认的对象

//Point a 为引用类型 占用4字节 a的4字节用来保存对象的地址

a.print();

a.set(3,5);

a.print();

}

}

class Point1 {

double x,y;

public Point1(double _x,double _y){

x = _x;

y = _y;

}

//手动定义构造方法 设定形参_x _y 用这两个的值赋值给x y

public double getDistance(Point1 p){

//定义求距离的方法getDistance 返回double型的距离

//方法里()定义形参p p是Point1类的对象

double d = Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));

//Math.sqrt开平方 百度搜索java开方运算

//这里的x y为程序中实际使用调用命令来调用方法getDistance的那个对象的x y

//用实际对象的x y 和形参p的p.x p.y运算

return d;

}

public static void main(String[] args) {

Point1 a = new Point1(3,5);

//new调用构造方法 构造方法内(3,5)为实参 对应(_x,_y)形参

//通过构造方法 使对象的x,y初始化为3,5

//每次执行方法 会在栈stack内开辟一个栈帧 这里调用构造方法 开辟了Point1()的栈帧

/*构造方法为创建对象的第三步

创建对象第一步创建一个全默认的对象 x y 全默认值

第二步初始化xy 如果在类中定义了double x =7.0 第二步会将x从默认0初始化为7.0

第三步调用构造方法 调用时生成对象的地址this 将构造方法的实参3,5赋值给对象的this.x this.y

因为构造方法中的x y 没有特意指名别的对象 所以默认x y 是指this.x this.y

即将3,5赋值给当前正在构造的对象

构造方法执行完毕后该方法的栈帧从栈stack内消失

*/

System.out.println(a.x+”,”+a.y);

Point1 b = new Point1(5,6);

/*第一步 创建新的对象 对象的x y 全默认值0

第二步 初始化 对象的x y 类中没有进行定义x=?y=? 所以跳过

第三步 调用构造方法 在栈stack内开辟Point1()的栈帧 将当前正在构造的对象的地址赋值给方法内的this

根据实参(5,6)进行运算 构造方法Point1的语句块内设定将5赋值给this.x 将6赋值给this.y

返回对象 构造方法执行完毕 栈帧从栈stack内消失

第四步 将new的对象的地址赋值给引用类型b

*/

double d = a.getDistance(b);

//a为调用方法的主体 (b)为实参 b的5,6对应Point1 p 形参的p.x,p.y

//即用主体a的3,5和实参b的5,6运算

//调用getDistance()方法 在栈stack内开辟一个栈帧 执行完毕后消失

//主体a的地址赋值给方法的this

//运算时使用 this.x this.y 和 b.x b.y

System.out.println(d);

}

//main方法结束 栈帧main()消失

}

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月14日 06:07
下一篇 2022年6月14日 06:08

相关推荐

  • 分享4条发微商朋友圈的方法(微商朋友圈应该怎么发)

    对于微商朋友来说,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底该怎么发呢? 为什么同样是经营一个朋友圈,有的微商看起来逼格满满,实际效果也不错;而有的却动都不动就被屏蔽甚至拉黑…

    2022年11月27日
  • 《宝可梦朱紫》梦特性怎么获得?隐藏特性获取方法推荐

    宝可梦朱紫里有很多宝可梦都是拥有梦特性会变强的宝可梦,很多玩家不知道梦特性怎么获得,下面就给大家带来宝可梦朱紫隐藏特性获取方法推荐,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 …

    2022年11月25日
  • 《宝可梦朱紫》奇鲁莉安怎么进化?奇鲁莉安进化方法分享

    宝可梦朱紫中的奇鲁莉安要怎么进化呢?很多玩家都不知道,下面就给大家带来宝可梦朱紫奇鲁莉安进化方法分享,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 奇鲁莉安进化方法分享 奇鲁莉安…

    2022年11月25日
  • 1千克等于多少磅

    克,此定义在1958年被美国以及其他英联邦会员国承认换算回来,一千克等于262磅,一磅等于037千克英国在1963年开始,依据度量衡法案的规;1 磅=16 盎司=04536 千克 …

    2022年11月24日
  • 《宝可梦朱紫》暴飞龙怎么抓?暴飞龙获得方法

    宝可梦朱紫暴飞龙位置在哪?在游戏中,很多玩家还不清楚暴飞龙具体要怎么样获得,其实获得方法很简单,暴飞龙直接是没得抓的,需要玩家从宝贝龙进化得到,下面一起来看一下宝可梦朱紫暴飞龙获得…

    2022年11月23日
  • 《宝可梦朱紫》布土拨怎么进化?布土拨进化方法介绍

    宝可梦朱紫中,不同的宝可梦有不同的进化方法,其中布土拨的进化方法是比较特殊的。很多玩家不知道宝可梦朱紫布土拨怎么进化,下面就带来宝可梦朱紫布土拨进化方法介绍,一起来看看吧,希望能帮…

    2022年11月23日
  • 《宝可梦朱紫》薄荷怎么获得?薄荷获得方法

    宝可梦朱紫中薄荷有改变宝可梦的属性或性格等效果,很多玩家想知道宝可梦朱紫薄荷怎么获得,下面就带来宝可梦朱紫薄荷获得方法,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 薄荷获得方法…

    2022年11月23日
  • 《宝可梦朱紫》怎么交换精灵?交换精灵方法一览

    宝可梦朱紫中玩家可以和好友或者npc进行交换宝可梦获得自己没有的宝可梦,很多玩家想知道宝可梦朱紫怎么交换精灵,下面就带来宝可梦朱紫交换精灵方法一览,感兴趣的小伙伴不要错过,希望能帮…

    2022年11月23日
  • 《宝可梦朱紫》龙爪技能怎么获得?龙爪技能获取方法

    宝可梦朱紫龙爪技能怎么获得?在游戏中,很多玩家还不清楚龙爪技能应该怎么获取,其实获取方法有很多,下面一起来看一下宝可梦朱紫龙爪技能获取方法,希望可以帮助各位玩家顺利的进行游戏内容。…

    2022年11月23日
  • 《宝可梦朱紫》怎么刷努力值?刷努力值方法推荐

    宝可梦朱紫中努力值是一项隐藏的数值,累积努力值可以提升宝可梦的属性。很多玩家想知道宝可梦朱紫怎么刷努力值,下面就带来宝可梦朱紫刷努力值方法推荐,感兴趣的小伙伴不要错过,希望能帮助到…

    2022年11月23日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息