• 构造方法(构造器)

    • 也叫构造函数,也是方法,是一种特殊的方法

      • 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指令。

第八天0304 构造方法 package import相关推荐

  1. 【Java开发语言 03】第三章 面向对象编程(面向对象与面向过程+类和对象+类成员一:属性+类成员二:方法+对象的创建和使用+封装和隐藏+构造器+关键字this,package,import)

    面向对象编程 1 面向对象与面向过程 1.1 java类及类的成员 2 java语言的基本元素:类和对象 2.1 类的语法格式 2.2 创建Java自定义类 2.3 对象的创建及使用 3 类的成员之一 ...

  2. package import

    03 package & import 1 package 无论Python还是Go,当代码量达到一定程度时,就需要使用package来分类.组织代码文件 package是多个go源码的集合, ...

  3. Java-关键字(二)package/import

    Java关键字(二) package关键字 package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包.(若缺省该语句,则指定为无名包).格式为: package 顶层包名.子包名 ...

  4. python 导包语法 import package as name 和 from package import name 的区别

    今天在导包的时候: # from easydict import EasyDict as edict # 成功 # import easydict.EasyDict as edict # 失败 结果: ...

  5. 【Python】function、module、Package及import导入方法

    计算机程序开发中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里面,这样,这个文件包含的代码就相对较少,很多编程 ...

  6. package和import

    当java类都是放在同一个目录下的时候,类之间的相互调用无需显式声明调用 同一个目录下,两个类的名字不能相同 文件过多,查找和修改都不易,且容易出错. java支持多个目录放置java,并且用过pac ...

  7. Java - package和import

    package 包的 3 个作用如下: 1.区分相同名称的类. 2.能够较好地管理大量的类. 3.控制访问范围. Java 包的命名规则如下: 1.包名全部由小写字母(多个单词也全部小写). 2.如果 ...

  8. ImportError: attempted relative import with no known parent package

    问题背景: 在windows中开发完对应的Pytest代码,在放到centos7.4时,出现这个错: 但是在windows中完美运行: 这个问题确实比较蛋疼,将近两三个小时浪费在这上面了: 概念理解: ...

  9. 探究 python import机制、module、package与名字空间

    在开始之前,先了解一个内置函数dir(),它可以帮助我们分析一些内部的东西,dir()的描述是: dir(): 函数不带参数时,返回当前范围内的变量.方法和定义的类型列表:带参数时,返回参数的属性.方 ...

最新文章

  1. java arraylist和list_Java中ArrayList和LinkedList区别
  2. webhook简单部署
  3. javascript 手机号间隔显示 123 4567 8910
  4. python输出键值列表_Python 键值分组或分区数据
  5. React+Redux仿Web追书神器
  6. 小米miui系统已停止服务器,小米两款机型停止 MIUI 更新,明天发布最终体验版固件...
  7. Servlet中获取请求头的数据
  8. 【4】协同过滤算法的原理与实现
  9. Web前端——HTML
  10. linux 终端最大化命令,11个让你吃惊的Linux终端命令
  11. 蔚来2018年平均每天亏掉2641万,车辆交付预期环比腰斩
  12. 在 Linux 的应用中测试中的延时和丢包模拟
  13. json html双引号,当gethtml方法返回json时,json中的字符串如果存在双引号,会破坏json的格式, 如:quot;...
  14. php企业微信扫码登录
  15. Updatable Learned Index with Precise Positions(VLDB2022)
  16. vlookup使用步骤_VLOOKUP函数的使用方法详解
  17. epub转pdf网站推荐
  18. M1 系统打包ipa
  19. “美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)E. 小花梨的数组
  20. android 手电筒服务,Android手电筒案例

热门文章

  1. 软件项目研发过程中阶段划分和工作方法
  2. 方便快捷!身份证OCR带你一秒录入
  3. 傅里叶变换究竟是什么玩意儿 以及 这些公式究竟是怎么来的 引子
  4. Java中的项目结构简述(项目、模块、包、类)
  5. Excel数据处理函数实践整理
  6. 在Linux终端命令行下播放音乐的命令
  7. 处理谷歌跨域不好使问题
  8. kdevelop的安装配置使用
  9. linux的挂起命令 linux 挂起命令
  10. OpenGLES 3.0