面向对象编程----构造方法
构造器
构造器又称为构造方法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);
}
}
本文来自博客园,作者:神奇的梦,转载请注明原文链接:https://www.cnblogs.com/fantasticDream/p/16289090.html