- 构造方法(构造器)
- 也叫构造函数,也是方法,是一种特殊的方法
- 1、构造方法没有返回类型,void不能写
- 2、构造方法的方法名和类名完全一样。
- 构造方法的作用
- 创建对象,只能使用关键字new调用
- 调用的语法:对象名 = new构造方法名(实参);
- 默认的构造方法
- 如果类中没有显式的定义一个构造方法,那么编译器会自动构建一个默认的无参的构造方法
- 构造方法的定义
- 1、构造方法创建对象时,可以将成员变量初始化为开发者提供的值。
- 2、如果开发者显式的定义了构造方法,则编译器不会提供默认的构造方法。
- this
- 成员变量与局部变量重名时,局部变量会覆盖成员变量。 this.变量名 使用this表示成员变量。
- 在类的构造方法中,还可以使用this关键字来调用重载的构造方法。this(实参); 这条语句必须在构造方法的第一行
- 成员变量与局部变量重名时,局部变量会覆盖成员变量。 this.变量名 使用this表示成员变量。
- 也叫构造函数,也是方法,是一种特殊的方法
- 练习:
- 1、直角坐标系中的点,抽象出一个类Point
- 属性:横坐标和纵坐标
- 提供合理的构造器:
- 1)通过一个整数来实例化一个点(该点的横纵坐标都是该值)
- 2)通过两个整数来实例化一个点
- 提供重载的成员方法
- 1)返回该点到原点的值. (Math.sqrt(xxx))
- 2)返回该点到(x,y)点之间的距离 getDistance(int x, int y)
- 3)返回该点到point点之间的距离,point是一个Point类的对象。 getDistance(Point point){ point.x point.y }
-
package com.qut.day0304; /** * 点类 * @author Administrator * */ public class Point { int x; int y; /** * 默认构造方法 */ public Point() { } /** * 构造方法x,y设为num * @param num */ public Point(int num) { x = num; y = num; } /** * 给xy分别赋值 * @param x * @param y */ public Point(int x, int y) { this.x = x; this.y = y; } /** * 求点到原点的距离 * @return 返回点到原点的距离 */ public double getDistance() { return Math.sqrt(x*x + y*y); } /** * 求两点间的距离 * @param x 另一个点的横坐标 * @param y * @return 返回点到给定坐标的值 */ public double getDistance(int x, int y) { return Math.sqrt((this.x-x)*(this.x-x) + (this.y-y)*(this.y-y)); } /** * 求两点间的距离 * @param point * @return 返回点到给定点的值 */ public double getDistance(Point point) { // return Math.sqrt((this.x-point.x)*(this.x-point.x) // + (this.y-point.y)*(this.y-point.y)); return getDistance(point.x, point.y); } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } }
- 2、定义一个Circle类
- 属性:圆心和半径(整数)
- 提供构造方法:
- 1)通过半径的值来实例化一个圆心在原点的圆。
- 2)通过两个整数值(x,y)及半径值来实例化圆。
- 3)通过Point对象point及半径值来实例化圆。
- 成员方法:
- 1)获取圆的周长
- 2)获取圆的面积
- 3)判断一个(x,y)的点是否在圆内,返回boolean类型。
- 4)判断一个点point(Point类型)是否在圆内。
- 5)判断该圆与另一个圆心坐标为x,y半径为r的圆是否相交,返回boolean类型
- 6)判断该圆与另一个圆的圆心坐标为point(Point类型),半径为r的圆是否相交。
- 7)判断该圆与另一个圆circle(Circle类型)是否相交。
-
package com.qut.day0304; /** * 圆类 * @author Administrator * */ public class Circle { //属性变量 Point circleCenter;//圆心 int r;//半径 /** * 默认构造函数 */ public Circle() { } /** * 圆心为原点,半径为r的构造函数 * @param r 半径 */ public Circle(int r) { circleCenter = new Point(); this.r = r; } /** * 圆心为(x,y)半径为r的构造函数 * @param x 圆心横坐标 * @param y 圆心纵坐标 * @param r 半径 */ public Circle(int x, int y, int r) { circleCenter = new Point(x, y); this.r = r; } /** * 圆心为point半径为r的构造函数 * @param point 圆心点 * @param r 半径 */ public Circle(Point point, int r) { circleCenter = point; this.r = r; } /** * 获取圆的周长 * @return double型 */ public double getLength() { return Math.PI * r * 2; } /** * 获取圆的面积 * @return double型 */ public double getArea() { return Math.PI * r * r; } /** * 判断点(x,y)是否在圆内 * @param x 点横坐标 * @param y 点纵坐标 * @return boolean型 true代表在圆内,false代表不在圆内 */ public boolean isInside(int x, int y) { return circleCenter.getDistance(x, y) < r; /* if(circleCenter.getDistance(x, y) < r) { return true; } return false;*/ } /** * 判断点point是否在圆内 * @param point 要判断的点 * @return boolean型 true代表在圆内,false代表不在圆内 */ public boolean isInside(Point point) { return isInside(point.x, point.y); /*if(this.circleCenter.getDistance(point) < r) { return true; } return false;*/ } /** * 判断与圆心(x,y)半径r的圆是否相交 * @param x 圆心横坐标 * @param y 圆心纵坐标 * @param r 半径 * @return boolean型 true代表相交,false代表不相交 */ public boolean isIntersect(int x, int y, int r) { return circleCenter.getDistance(x, y) < r + this.r; /*if(circleCenter.getDistance(x, y) < r + this.r) { return true; } return false;*/ } /** * 判断与圆心point半径r的圆是否相交 * @param point 圆心 * @param r 半径 * @return boolean型 true代表相交,false代表不相交 */ public boolean isIntersect(Point point, int r) { return isIntersect(point.x, point.y, r); /*if(circleCenter.getDistance(point.x, point.y) < r + this.r) { return true; } return false;*/ } /** * 判断与圆circle是否相交 * @param circle 另一个圆对象 * @return boolean型 true代表相交,false代表不相交 */ public boolean isIntersect(Circle circle) { return isIntersect(circle.circleCenter, circle.r); /*if(isIntersect(circle.circleCenter, circle.r)) { return true; } return false;*/ } }
- 1、直角坐标系中的点,抽象出一个类Point
- package
- java中的类的组织形式,就是以包的形式来组织,包名实际上就是在磁盘中以文件夹路径的形式表现
- 声明语法:package 包名;
- 注:
- 1、package语句必须在该java文件的第一行代码(除注释外)
- 2、package所声明的包,必须要与该java文件实际所在的包要一致,否则编译报错。
- 3、如果在创建类的时候,不指定包名,该类会放在default包下,该类不能被其他包中的类访问。
- 4、命名规范:com.xxx.xxx.xxx
- 1)包名必须要全部小写
- 2)com.公司名的缩写.项目名.模块名
- 3)如果还需要子模块,还可以继续添加
- 5、同一个包下的类,可以直接相互访问,不同的包下的类的访问,需要用import指令导入。
- 注:
- import指令
- 如果在不同的包下的类,需要相互访问,就需要使用import语句导入类。
- import 包名.类名;
- import 包名.*; //导入所有类
- 全限定类名
- 包名.类名 称为该类的全限定类名。
- 在同一个类中,如果需要使用不同包下的同名类,一个使用import指令,另一个使用全限定类名。
- java.lang包下所有的类,都是编译器自动导入的,不需要显式的调用import指令。
- 如果在不同的包下的类,需要相互访问,就需要使用import语句导入类。
第八天0304 构造方法 package import
最新推荐文章于 2022-03-29 16:15:00 发布