美文网首页
Java(六)--类和对象

Java(六)--类和对象

作者: 五秋木 | 来源:发表于2017-10-12 21:45 被阅读0次
    1. 文件中可以包含多个类,但是只能有一个公共类,公共类且与文件名同名。
    2. 类的建立与测试
      形式一:将测试放在主类的main函数中,类的数据域、构造方法与其他方法放在主函数外,所有的都在同一个文件中,文件名与类名相同。例如:Circle1.java文件中
    public class Circle1{
      public static void main(String [] args)
    {
    ....
    Circle1 circle1 = new Circle1()  //创建对象
    Circle1 circle2 = new Circle1(5)  //创建对象
    circle2.radius = 15;  //调用类中的数据域
    }
    double radius;   //数据域
    Circle1(){
       radius = 1.0
    }//无参数构造函数
    Circle1(double newRadius){
       radius = newRadius;
    }//有一个参数的构造函数
    double getArea(){
      return radius*redius*Math.PI;
    }
    }
    

    形式二:将类中数据域、构造方法与其他方法均放在一个类中。测试函数放在另外一个类,且该类为主类中。即文件中包含两个类,测试在主类中。例如:
    文件TestCircle1.java

    public static void main(Sting [] args)
    {
    ...
    }
    class Circle1{
    double radius;
    Circle1()
    {
     radius = 1..0;
    }
    Circle1(double newRadius){
     radius = newRaius;
    }
    double getArea(){
     return radius*radius*Math.PI;
    }
    }
    
    1. 构造方法:必须和所在类相同的名字、无返回类型、在新建一个对象new时调用,构造方法是初始化对象。
    2. 对象的数据和方法使用圆点运算符来访问和调用。
    3. 区别:
      Math.methodName(参数)来调用Math中的方法。
      但Circlie.getArea()不能来调用getArea方法。
      原因:Math中所有方法是用关键词static定义的静态方法
      getArea是个实例方法。非静态。必须使用具体object.getArea()
      的方式从对象调用。
    4. 匿名对象:创建对象后不在进行赋值给一个变量进行引用。例如
      System.out.print("Area is "+new Circle(5).getArea());
    5. 类的属性或者数值域创建后若没有初始化,java会自动赋默认值。
      例如:
      int类型变量默认初始值为0
      float类型变量默认初始值为0.0f
      double类型变量默认初始值为0.0
      boolean类型变量默认初始值为false
      char类型变量默认初始值为0(ASCII码)
      long类型变量默认初始值为0
      引用型变量默认初始值为null。

    注1:若局部变量没有初始化,会出现编译错误。
    注2:NullPointerException:当调用值为null的引用变量上的方法时会发生此类异常。故在通过引用变量调用一个方法前,确保将对象引用赋值给该变量。

    1. 库类
      1. Date类--java.util.Date
      Date();  //构造函数
      Date(elapseTime:long)   //构造1970-1-1+elapseTime的时间
      toString();   //返回日期和时间的字符串表达式
      getTime();   //返回从1970-1-1至今的毫秒数
      
      1. Random类
      Random();  //以当前时间作为种子构造Random对象
      Random(seed:long): //以特定种子构造Random对象
      nextInt();   //返回一个随机整数
      nextInt(n:int);   //返回0到n的整数,但不包括0和n
      nextLong();   //随机long型
      nextDouble();   //(0.0 , 1.0)
      nextFloat();    //(0.0F , 1.0F)
      nextBoolean();   //随机布尔
      

    相同的种子产生相同的随机数列,固定的随机数列测试程序。

    1. GUI组件--java.swing.*
      1. JOptionPane(三种方法:显示、输入、确定)
        showMessageDialog
        showInputDialog
        showConfirmDialog
      2. JFrame、JButton、JLabel、JTextField、JCheckBox、JRadioButton、JComboBox、JPanel
    2. 常量:被类中所有对象所共享,一定是静态的,声明:final static double PI = 3.1415926......,被引用时直接使用Math.PI即可
    3. 类中变量:实例变量和静态变量
      static变量与instance变量,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。
      实例变量的引用必须在实例(对象)创建后,且方式为:对象名.变量名
      静态变量的引用
      1. 对象名.变量名,可能出现警报:如下
        The static field Calendar.MONTH should be accessed in a static way
      2. 类名.变量名(推荐)
        同理:静态方法和实例方法与此类似。
    4. 可见性修饰符
      public:在类、方法、数据域前出现,表示可以被任何其他的类访问。
      无public:只能被同一个包中任何类访问。包私有或者包内访问
      private:方法和数据域只能在它自己的类中被访问。仅能修饰类的成员,不能修饰类。
      如果一个对象定义在自己的类中,那么这个对象可以访问他的私有对象。
    5. 为了防止用户创建对象,例如Math中所有的数据域和方法都是静态的,所以没必要创建对象,所以定义Math类的构造函数:private Math{ },防止创建类的构造。
    public final class Math {
        /**
         * Don't let anyone instantiate this class.
         */
        private Math() {}
    

    Math是final类 不是static类
    这是sun公司关于java.lang.Math类的开头,由于构造函数被声明为私有的,就是说明不能被外部调用,所以不能new出来一个新的对象
    Math类的作用是对数学进行一些扩充,进行一些常量定义、操作定义,只需要传入参数就可以返回你需要的结果,所以所有方法都是静态方法直接使用,不需要实体类就行
    那个声明:Don't let anyone instantiate this class. 也说明了Math类就是不会初始化任何实例。Math还定义为final类,不允许被继承。所以永远不会出现Math对象 。

    1. 为防止用户随意篡改数据域,将之设为private类型,这叫做数据域封装,但是类外的对象不能访问这个数据域。想读取:使用get方法;想修改,使用set方法。
    2. 在方法中引用的对象和传递的对象是一样的,传共享。

    相关文章

      网友评论

          本文标题:Java(六)--类和对象

          本文链接:https://www.haomeiwen.com/subject/siqbyxtx.html