[关闭]
@JRuiCoder 2016-06-05T15:23:48.000000Z 字数 1985 阅读 1117

对象与类

java


一. 面向对象

类:构造对象的模板或蓝图。
封装
继承

类之间的关系

依赖(use-a)
聚合(has-a) 类A的对象包含类B的对象
继承(is-a)

对象

对象变量不是一个对象,也没有引用对象,不能将方法应用于这个变量上,需要将这个变量初始化。
GregorianCalendar类所包含的方法比Date类多。
通常习惯在访问器方法名前加上前缀get,更改器方法前面加上set
对实例域做出修改的方法称为更改器方法,仅访问实例域而不进行修改的方法称为访问器方法
编译源文件的方法:由于某个类使用了另一个类,及时没有显示编译,但是仍会由于引用相关的类而被编译

二. 继承

超类 superclass 基类 base class 父类 parent class
子类 subclass 派生类 derived class child class

声明

  1. class ClassName
  2. {
  3. field1
  4. field2
  5. constuctor1
  6. method1
  7. }

构造器

构造器的作用是构造并初始化实例对象。当创建一个对象时,系统为这个对象的属性进行初始化,这种默认初始化被所有基本类型设为0,或false,把所有引用类型的属性设置为null
语法

  1. class 类名
  2. {
  3. 变量声明;
  4. 类的名称(参数列表)
  5. {
  6. 方法体
  7. }
  8. }

特点
构造器和类具有相同的名字
一个类可以有多个构造器
构造器可以有没有参数或者多个
构造器没有返回值和返回类型
构造器不能被显示调用,总是与new运算符仪器被调用,在创建一个类的新队形的同时,系统会自动调用该类的构造器为新对象初始化。

在java的每个类中,至少要有一个构造器,没有定义的话,编译器将自动插入缺省的构造器。

方法重载
类的定义中存在两个或两个以上的同名成员方法,为了使编译器能区分同名的成员方法,同名方法的参数个数或参数的数据类型不同。

构造方法的重载

建议为java类保留无参数的构造器,为一个类编写了有参数的构造器,通常建议为该类编写一个无参数的构造器。一本把构造器设置为public访问权限,设置为private是为了阻止其他类创建该类的实例。
当我们想调用超类的的某个方法,但是当前类也有相同的方法,这是可以使用super关键字,知识一个指示编译器调用超类方法的特殊关键字。

  1. public double getSalary(){
  2. double baseSalary=super.getSalary();
  3. return baseSalary+bonus;
  4. }

继承层次

有一个公共超类派生出来的所有类的集合被称为继承层次,在继承层次中,从某个特定的类到其祖先的路径被称为该类的继承类。

多态

is-a规则:置换法则,程序中出现超类对象的任何地方都可以用子类对象置换。
不能将超类的引用赋给子类变量

动态绑定

编译器查看对象的声明类型和方法名
编译器将查看调用方法时提供的参数类型,重载解析。 方法的名字和参数列表称为方法的签名。
private static final 方法或者构造器 静态绑定,调用的方法依赖于隐式函数
当程序运行时并且采用动态绑定调用方法式,虚拟机一定调用与所引用对象的实际类型最合适的那个类
每次调用方法搜索开销较大,虚拟机预先为每个类创建了一个方法表method table
覆盖一个方法的时候,子类方法不能低于超类方法的可见性。

阻止继承

不允许扩展的类被称为final类

  1. final class Executive extends Manager
  2. {
  3. ···
  4. }

类中的特定方法也可以被声明为final,子类就不能覆盖这个方法。
一个类声明为final,但是域不是final ??? 内联方法

强制类型转换

  1. double x=10.987;
  2. int nx=(int)X;

在进行类型转换之前应该检查一下能否成功转换。
???? 一个子类的引用赋给一个超类变量,但是一个超类的引用赋给一个子类变量,必须进行类型转换,才能够通过运行时的检查。
只能在继承层次内进行类型转换
在将超类转换为子类之前,应该使用instanceof进行检查。

抽象类

抽象类 abstract ,不能够实例化

受保护访问

protected 超类中的某些方法允许被子类访问,允许子类的方法访问超类的某个域。

Object对象

是java所有类的始祖,如果没有明确的指出,Object就是这个类的超类。

equals方法

用于检测一个对象是否等于另外一个对象,判断两个对象是否具有相同的引用。

泛型数组列表

ArrayList 具有自动调节数组容量的功能,采用类型参数的泛型类,指定数组列表保存的元素对象类型,需要用一对尖括号将类名括起来加在后面
ArrayList
声明和构造一个保存employee对象的数组列表

  1. ArrayList<Employee> staff=new ArrayList<Employee> ();
  2. java7,省去右边的类型参数
  3. ArrayList<Employee> staff=new ArrayList<>();

add方法

将元素添加到数组列表中。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注