• 构造方法(构造器)

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

      • 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. shell高级视频答学生while循环问题
  2. 9. 混合模型和EM(2)
  3. Kotlin中的接口回调
  4. Java:十六进制转换成十进制
  5. 一次经典的tcp三次握手
  6. 在VS2010中使用Git【图文】
  7. 分布式系统:CAP 理论的前世今生
  8. 2022中国人工智能芯片行业研究报告
  9. mysql in 命令
  10. Win10配置Tensorflow_Object_Detection_API
  11. 支持Flash和JavaScript的图表控件FusionWidgets
  12. 常见的运行时异常与编译时异常举例
  13. Hibernate会话工厂
  14. 【转】后端取得当前PAGE的方法
  15. TagSupport标签的应用
  16. 使用JS完成一个简单的计算器功能
  17. 代数数论初步(全书)
  18. 采用java编写一个软件,100以内的口算题【软件构造大作业】
  19. CSDN如何上传照片
  20. ThinkPad开启、禁用触摸板

热门文章

  1. python爬虫遇到 ‘NoneType‘ object has no attribute ‘find_all‘ 问题
  2. Flutter Widgets 之 RichText
  3. Cache、Cookie清除
  4. 2021-12-06 迈向程序猿的第四十三步
  5. Java8新的时间和日期
  6. form表单数据回填
  7. ssm毕设项目医院预约挂号管理系统q9ig2(java+VUE+Mybatis+Maven+Mysql+sprnig)
  8. 惊闻家乡的学校要撤销
  9. 啥是数据处理能力?(二)数据处理工具
  10. 如何实现伸缩 /折叠报表