java基础知识九、十

第九章

  • 成员访问权限:

    公有public用+表示:任何方法都可访问
              保护protected用#表示:包内的类或者声明保护成员的类的派生类的方法都可访问。
              私有private用-表示:仅声明私有成员的类的方法可访问。
              包级即package用~表示或默认无表示:包级成员可被包内的所有类的方法友好访问(friendly)。Java无friend,无析构函数(因有自动垃圾回收)    

    

  • 构造函数

无返回类型,函数名同类名,用于初始化对象。
不自动执行,只在new时执行或通过super或this显式调用。
必须是实例方法,可为公有、保护、私有和包级访问权限。
类的变量为引用(相当于C指针),须用new创建和调用构造函数实例化。
Circle c2=new Circle(5.0);//调用时必须有括弧,可带参初始化
缺省构造函数(同C++)
如果类未定义任何构造函数,编译器会自动提供一个不带参数的默认构造函数。
如果已自定义构造函数,则编译器不会提供默认构造函数。
Java没有析构函数,但内存垃圾自动回收之前会自动调用finalize( ),可以覆盖定义该函数,完成自己想要的功能(如关闭设备)

  • 静态变量、常量、方法

实例变量(instance variable):未用static修饰的成员变量,属于类的具体实例(对象),只能通过对象访问,如“对象名.实例变量”或“new A( ).实例变量”,“super.实例变量”,“this.实例变量” 。
静态变量(static variable)是用static修饰的变量,被类的所有实例(对象)共享,也称类变量。可以通过对象或类名访问,提倡“类名.静态变量”访问。各对象共享静态变量。

父类的final实例函数f禁止子类覆盖父类f:子类不能定义同签名实例f。父类的实例函数f非final时,子类可覆盖父类的f 。
构造函数不能为final的
父类的final静态函数f禁止子类同签名地隐藏该父类的f。
隐藏意味可被发现,覆盖意味无法找回:若引用变量引用的是子类对象,通过该变量调用的是子类的覆盖函数,被覆盖的父类函数通过该变量无法调用。

构造函数不能用static修饰静态函数无this
静态方法可以通过对象或类名调用。
静态方法不通过对象只能访问类的静态成员,通过对象才能访问类中的实例成员。
静态方法不会通过晚期绑定实现多态。

  • 成员变量

成员变量(包括实例变量和静态变量)的作用域是整个类,与声明的位置无关。
如果一个成员变量的初始化依赖于另一个成员变量,则后者必须在其前面声明

  • this指针

this引用:是对调用某个方法的当前对象的引用

可通过this调用当前类的其它构造函数,需防止递归调用。
this(actualParameterListopt)  //调用当前类的构造函数
上述调用必须是当前构造函数的第1条语句。

第十章

面向对象开发:一个软件系统由一系列参与活动的对象构成。故需建立对象模型、动态模型和功能模型。
对象模型:描述对象的组织结构。是核心模型。
动态模型:描述对象之间的交互行为。
功能模型:描述对象的行为或状态变化。
对象模型:描述对象由哪些属性构成。构成方式包括:关联、聚合、组合、依赖、继承。

关联关系(association)是一种通用的二元关系,对象间通过活动发生联系。例如,学生(Student)选学课程(Course),教师(Faculty)教授课程(Course),这些联系可以在UML中表示。

聚合关系(aggregation)是一种拥有关系,表示整体与部分之间的关系,即has-a的关系。所有者成为聚集者,从属对象称为被聚集者。在聚合关系中,一个对象可以被多个聚集者拥有(Weak has a)。
组合关系(composition)是一种隶属关系,表示从属者强烈依赖于聚集者。一个从属者只能被一个聚集者所拥有,聚集者负责从属者的创建和销毁(Strong has a)

依赖关系(dependency)指的是两个类之间一个(称为client)依存另一个(称为supplier)的关系。在UML中,从client画一条带箭头的虚线指向supplier类。

继承关系(inheritance)表示子类与父类之间的is-a关系。

实现关系(realization)表示类和接口之间的关系。类实现接口。

猜你喜欢

转载自www.cnblogs.com/jing-yu/p/9059762.html