Java(六)--类和对象

  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. 在方法中引用的对象和传递的对象是一样的,传共享。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,531评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,048评论 0 62
  • 这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱。只要能够搞明白这个系列的绝大多数题目,在面试...
    独念白阅读 331评论 0 3
  • 因为起的太早,所以现在非常困,作图也差点睡着。 和同事一起买了钢笔,不小心自古红蓝出cp了。 你猜哪个是我的?古月...
    咸酥阅读 84评论 0 0
  • 第一次听到宋冬野的《莉莉安》是在一个百无聊赖的晚上。当他用木质般低沉的声音唱出“她发现孤独的人,准备动身”时,仿佛...
    一株南瓜阅读 1,274评论 7 8