java基础知识九十
Posted 静静的yu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)表示类和接口之间的关系。类实现接口。
以上是关于java基础知识九十的主要内容,如果未能解决你的问题,请参考以下文章