fantasticDream

面向对象编程----构造方法

构造器

构造器又称为构造方法constructor

类里面只有属性跟方法!构造方法也是方法它有几个特殊的地方:

用于构造该类的实例,(对象)别的事不做

构造器用于构造该类的实例。

格式如下:

[修饰符] 类名 (形参列表){

//n条语句

} 

是一种特殊的方法:

1.通过new关键字调用!!

2.构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构造器立调用return

3.如果我们没有定义构造器,则系统会自动定义一个无参的构造函数。如果已定义则编译器不会添加!

4.构造器的方法名必须和类在一

5.作用:构造该类的对象,经常也用来初始化对象的属性

定义一个“点”(Point)类用来表示三维空间中的点(有三个坐标)。要求如下:

--可以生成具有特定坐标的点对象。

--提供可以设置三个坐标的方法。 

package cn.Test.oop;

public class Car {
int speed;
// 第一写修饰符,完了写Car构造器的方法名必须和类在一致。
// 本质上有返回值,必然是返回创建好的对象,什么都不用写
// 构造器虽然有返回值,
// 但是不能定义返回类型(返回值的类型肯定是本类),
// 不能在构造器里调用return。
// 如果我们没有定义构造器,
// 则系统会自动定义一个无参的构造函数。
// 如果已定义则编译器不会添加!
// 除了帮助我们构造一个对象,还用来帮助我们初始化属性
  public Car() {
  System.out.println("说明构造器被调用了");
  }
}

package cn.Test.oop;
/**
* 测试构造方法
* @author 神奇的梦
*
*/
public class TestConstructor {
  public static void main(String[] args) {
  // 方法需要对象来调用可是对 用方法的时候对象都没有
  // 所以通过new来直接调用构造器
  Car c=new Car();
  }
}

package cn.Test.oop;

public class Point {
double x,y,z;
// 通过构造器初始化对象的属性
// 这样做的好处是:
// 你自己加了构造器编译器就不会给你加无参构造器

作用:构造该类的对象,经常也用来初始化对象的属性

public Point(double _x,double _y,double _z) {
x=_x;
y=_y;
z=_z;
}
测试的时候,建一个点就比较简单了
public void setX(double _x) {
x=_x;
}
public void setY(double _y) {
y=_y;
}
public void setZ(double _z) {
z=_z;
}

// 方法有输入有输出返回一个功能块
// 另外一个点可以作为一个形参传进来Point pxx

提供可以计算该“点”距另外点距离的方法。
public double distance(Point pxx) {
// Math.sqrt()是开方类,记得加括号把整体括起来,不然就超double表述范围了
double resulta = Math.sqrt((x-pxx.x)*(x-pxx.x)+(y-pxx.y)*(y-pxx.y)+(z-pxx.z)*(z-pxx.z));
return resulta;
}
// Point是 点 的意思
// The constructor Point() is undefined
// 构造函数Point()未定义
public static void main(String[] args) {
// 你自己加了构造器编译器就不会给你加无参构造器
// Point p = new Point();
// 怎么解决呢!  直接传参
Point p = new Point(3,4,8);
Point p2 = new Point(200,40,80);

使用p.setX()方法把p.x的值改为5
p.setX(5);
System.out.println(p.x);

// 指p到p2的距离p.distance(p2)
p.distance(p2);
System.out.println(p.distance(p2));
double xss=-12*-12;
System.out.println(xss);
  }
}

posted on 2022-05-19 16:34  神奇的梦  阅读(54)  评论(0)    收藏  举报

导航