面向对象特征--封装,继承,多态
继承:
定义:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么,多个类中无需再定义这些属性和行为,只需要和抽取出来的类构成继承关系。
继承的好处:减少了代码的冗余、提高了代码的复用性、在子类中扩展子类自己特有的功能,而不影响其他类、只要类与类之间符合什么是什么的关系就可以使用继承
继承关键字(extends)
格式:class a extends b a是b的子类(派生类)
子类会继承父类(基类)所有的实例变量和实例方法
规定super(形参列表);必须在构造器的首行。
如果构造器首行没有声明,默认是super();即调用父类的空参构造方法
这么做是为了先对父类成员初始化
开发中常见错误:
抽象类
定义:如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
用关键字abstract修饰的类.
一般是用来让程序猿继承并实现抽象类中的方法。
特点:抽象类除了不能实例化对象,其它功能和正常类一样。
抽象类只能用作父类(基类),只能被继承,继承的子类必须实现抽象类中的所有方法,参数类型、返回值类型必须和父类完全一致,否则将本类也声明为抽象类。
面向对象特征--封装,继承,多态
多态:
定义:同一种事物,在不同时刻表现不同状态。父类引用指向子类对象,前提:二者必须有直接或者间接继承关系。
好处:提高了代码的扩展性;
eg:Animal sdf=new Dog();//Animal为父类 Dog为子类 。Animal引用指向Dog的对象
将Dog类向上转型为Animal类,用sdf直接调用父类中的方法,如果子类重写了父类的方法,则调用子类重写的方法。
Dog dog=(dog)sdf;//向下转型,这样就能调用子类独有的方法;
编译期是父类,运行期是子类。
多态环境下调用静态方法、成员变量时,编译和运行期间都看等号左边。
final关键字
final可以修饰类、方法、属性、参数
final修饰的变量值不能被改变,故称为常量。
接口
面向接口编程;
在程序设计时,不考虑接口功能的具体实现,只关心接口需要具备哪些功能。
从本质上讲接口是一种特殊的抽象类,包含抽象方法。
接口的定义:用关键字interface来声明一个接口