第八天0304 构造方法 package import

  • 构造方法(构造器)
    • 也叫构造函数,也是方法,是一种特殊的方法
      • 1、构造方法没有返回类型,void不能写
      • 2、构造方法的方法名和类名完全一样。
    • 构造方法的作用
      • 创建对象,只能使用关键字new调用
      • 调用的语法:对象名 = new构造方法名(实参);
    • 默认的构造方法
      • 如果类中没有显式的定义一个构造方法,那么编译器会自动构建一个默认的无参的构造方法
    • 构造方法的定义
      • 1、构造方法创建对象时,可以将成员变量初始化为开发者提供的值。
      • 2、如果开发者显式的定义了构造方法,则编译器不会提供默认的构造方法。
    • 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;*/
      	}
      }
      
      
  • 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指令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值