复习(1)

                                          **第一部分    对象与类**
 1、面向对象程序设计
  1.1、类之间的关系
     在类之间,最常见的关系有:
     依赖(“uses-a”)
     聚合(“has-a”)
     继承(“is-a”)
     依赖,即“uses-a”关系,是一种最明显、最常见的关系。如果一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类。
     聚合,即“has-a”关系,意味着类A的对象包含类B的对象。
     继承,即“is-a”关系,是一种用于表示特殊与一般关系的。

   1.2、对象与对象变量
      在Java程序设计语言中,使用构造器构造新实例。构造器是一种特殊的方法,用来构造并初始化对象。

   2、使用预定义类
    2.1、Java类库中的LocalDate类
       Date类的实例有一个状态,即特定的时间点。Date类中的时间是用距离一个固定时间点的毫秒数(可正可负)表示的,这个点就是所谓的纪元(epoch),它是UTC时间1970年1月1日00:00:00。
       标准Java类库分别包含了两个类:一个是用来表示时间点的Date类;另一个是用来表示大家熟悉的日历表示法的LocalDate类。
       不要使用构造器来构造LocalDate类的对象。实际上,应当使用静态工厂方法(factory method)代表你调用构造器。下面的表达式:
       LocalDate.now()
       会构造一个新对象,表示构造这个对象时的日期。
       可以提供年、月和日来构造对应一个特定日期的对象:
       LocalDate newYearsEve = LocalDate.of(1999, 12, 31);
       一旦有了一个LocalDate对象,可以用方法getYear、getMonthValue和getDayOfMonth得到年、月和日
       
     2.2、封装
       类的访问权限
       私有方法
       final实例域
       静态域与静态方法
     2.3、工厂方法
       静态方法还有一种常见的用途。类似LocalDate和NumberFormat的类使用静态工厂方法(factory method)来构造对象。如NumberFormat类如下使用工厂方法生成不同风格的格式化对象:
       NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
       NumberFormat percentFormatter = NumberFormat.getPercentInstance();
       为什么NumberFormat类不利用构造器完成这些操作呢?这主要有两个原因:
       (1)无法命名构造器。构造器的名字必须与类名相同。但是,这里希望将得到的货币实例和百分比实例采用不用的名字。
       (2)当使用构造器时,无法改变所构造的对象类型。而Factory方法将返回一个DecimalFormat类对象,这是NumberFormat的子类。

      2.4、方法参数
        程序设计语言中有关将参数传递给方法。  
        按值调用表示方法接收的是调用者提供的值。而按引用调用表示方法接收的是调用者提供的变量地址。
        Java中方法参数的使用情况:
        (1)一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)
        (2)一个方法可以改变一个对象参数的状态
        (3)一个方法不能让对象参数引用一个新的对象

      3、对象构造
        3.1、重载
         如果多个方法有相同的名字、不同的参数,便产生了重载。(重载解析)
         要完整的描述一个方法,需要指出方法名以及参数类型,这叫做方法的签名(signature)
        3.2、默认域初始化
         如果在构造器中没有显式的给域赋初值,那么会被自动赋为默认值 
        3.3、无参数构造器
        3.4、显式域初始化
        3.5、对象析构与finalize方法
          可以为任何一个类添加finalize方法。finalize方法将在垃圾回收器清除对象之前调用。
        
      4、包


                                     **第二部分   继承**
        
      1、类、超类和子类
         1.1、子类构造器
           看下面一个构造器:
           public Manager(String name, double salary, int year, int month, int day) {
                super(name, salary, year, month, day);
                bonus = 0;
                }
            这里关键字super具有不同的含义,是“调用超类Employee中含有n、s、year、month和day参数的构造器”的简写形式。
            由于Manager类的构造器不能访问Employee类的私有域,所以必须利用Employee类的构造器对这部分私有域进行初始化,我们可以通过super实现对超类构造器的调用。使用super调用构造器的语句必须是子类构造器的第一条语句。
            如果子类构造器没有显式地调用超类的构造器,则将自动的调用超类默认(没有参数)的构造器。如果超类没有不带参数的构造器,并且在子类的构造器中又没有显式的调用超类的其他构造器,则Java编译器将报告错误。
            注:关键字this有两个用途:一是引用隐式参数,二是调用该类其他的构造器。
                   同样,super关键字也有两个用途:一是调用超类的方法,二是调用超类的构造器

          1.2、多态
            在Java程序设计语言中,对象变量是多态的。一个Employee变量既可以引用一个Employee类对象,也可引用一个Employee类的任何一个子类的对象。然而,不能将一个超类的引用赋给子类变量。
            方法调用过程的详细描述:
            1)编译器查看对象的声明类型和方法名。
            2)接下来,编译器将查看调用方法时提供的参数类型,这个过程被称为“重载解析”
            3)如果是private方法、static方法、final方法或者构造器,那么编译器将可以准确的知道应该调用哪个方法,我们将这种调用方式称为静态绑定。
            4)当程序运行,并且采用动态绑定调用方法时,虚拟机一定调用与x所引用对象的实际类型最合适的那个类的方法。

         进行类型转换的唯一原因:在暂时忽视对象的实际类型之后,使用对象的全部功能
         总结:只能在继承层次内进行类型转换
                    在将超类转换成子类之前,应该使用instanceof进行检查

           Java四个访问符:
           1)仅对本类可见——private
           2)对所有类可见——public
           3)对本包和所有子类可见——protected
           4)对本包可见——默认,不需要修饰符

         2、泛型数组列表
         3、对象包装器与自动装箱
         4、枚举类
            public enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE}
         5、反射初步
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值