面向对象 下

来源:互联网 发布:超能勇士知乎 编辑:程序博客网 时间:2024/06/10 05:27

类的继承
extends
子类对象的实例化
构造方法:
super()和this()不能放在同一个构造方法里
super()和this()必须放在构造方法的第一句
方法的重写
访问权限不能比父类中的低
final关键字(最终的)
final标记的类不能被继承
final标记的方法不能被重写
final标记的变量不能被赋值,只能第一次初始化(创建时初始化或者在构建方法中初始化)。如果final变量为static的话,必须在创建时初始化。
public static final int i = 0; 定义常量
抽象类(abstract)

  • 抽象类和抽象方法用abstract修饰
  • 抽象类不能被实例化(也就是不能用new去产生对象)
  • 抽象方法只需要声明不需要实现
  • 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化

接口(interface)
接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
  • 接口中的成员都是public访问类型的。接口内的变量默认都是public static final 标识的
  • 接口可以用extends去继承一个接口
  • 接口可以用implements去实现接口内的所有方法,也可以去定义一个抽象类用implements去实现一个接口中的定义的部分方法
  • 一个类可以继承一个父类的同时,实现一个或多个接口,extends关键字必须位于implements关键字之前
对象的类型转换
  • 子类对象可以自动转换成父类
  • 父类转换成子类必须使用强制转换。
  • instanceof 操作符可以用它来判断一个实例对象是否属于一个类。  A  instanceof B
  • Object类及equals方法
面向对象的多态性
1).应用程序不必为每一个派生类(子类)编写功能调用,只需要对抽象基类进行处理即可。这一招叫“以不变应万变”,可以大大提高程序的可复用性。
2). 派生类的功能可以被基类的引用变量引用,这叫向后兼容,可以提高程序的可扩充性和可维护性。以前写的程序可以被后来程序调用不足为奇,现在写的程序(如callA方法)能调用以后写的程序(以后编写的一个类A的子类,如类D)就了不起了。
匿名内部类

abstract class A {
abstract public void fun1();
}
class Outer {
public static void main(String[] args) {
new Outer().callInner(new A() {
public void fun1() {
System.out.println("implement for fun1");
}
});
}
public void callInner(A a) {
a.fun1();
}
}
原创粉丝点击