Java复习笔记+经验总结-03 继承与多态 接口与抽象类

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/yanglong_blog_/article/details/75633718

继承: 继承一般指晚辈从父辈那里继承财产,也可以说是子女拥有父母所给与他们的东西。继承是子类拥有父类的非私有成员,使用关键字extends来指明父类.

[修饰符] class子类名extends父类名

继承使用原则: 

子类可以继承同包中由默认修饰符修饰的成员

子类不能继承被声明为private的成员

如果子类声明了与父类同名的成员变量,则子类隐藏了父类的成员变量

如果子类声明了一个与父类同名的方法,则称子类的成员方法重写(覆盖)父类的成员方法.


super: 父类指针, 子类中访问父类中被子类隐藏的成员时使用.

super可以掉用父类的构造函数: super([参数列表])

 

多态: 重载(编译时多态),重写(运行时多态).

重载: 方法名相同,参数个数,或者参数类型不同.

注意:方法返回值类型不能作为区分重载的标志.

重写(覆盖):子类方法名与父类的方法相同,称子类覆盖了父类的方法.

注意:子类不能覆盖父类中声明为finalstatic的方法

子类必须覆盖父类中声明为abstract的方法

子类覆盖父类中的方法,那么子类方法声明必须和父类一样.

 

向上转型:父类对象引用子类对象实体

注意:向下转型会出现问题,不安全,不建议使用.

抽象类: 抽象类不能被实例化,在定义抽象类时, class前加上abstract.

抽象方法: 抽象方法只有方法的声明,没有方法的实现.

注意:抽象方法不能使用privatestatic关键字修饰,只要有抽象方法,就一定要声明为抽象类.

抽象类的构造器不能用于创建实例,主要用于被子类调用.

final:

final可以修饰变量(成员变量,局部变量),final修饰的变量表示不可改变.

final可以修饰引用类型,final修饰的引用类型表示该引用类型指向的地址不可以改变,但是地址引用的对象实体是可以改变的.

注意: String, Math,包装类是final,也称为顶级类.

使用final修饰的方法是不可以被重写的。

内部类: 成员内部类,局部内部类,  静态内部类,匿名内部类.

匿名内部类:

匿名内部类可以继承父类的方法, 也可以重写父类的方法.

匿名内部类可以访问外嵌类的成员, 匿名类中不能声明静态变量和静态方法.

使用匿名类时, 必须在某个类中使用匿名类创建对象.

使用匿名类时, 直接使用父类的构造方法.

接口: 接口是特殊的抽象类,接口中的方法全部是抽象方法,接口中的变量全部都是静态常量,接口用implements实现.

注意:接口可以被接口继承,一个接口可以多继承接口,类实现接口可以多实现.

如果多个接口中定义的常量名冲突,则使用接口名.常量解决冲突.

接口与抽象类:

接口与抽象类都不能被实例化

子类必须实现接口中的方法, 必须重写抽象类中的抽象方法.

接口制定了个模块间的标准, 体现的是一种规范.

抽象类作为多个子类的父类, 体现一种模板式的设计.

注意:接口中不能定义静态方法,只能定义静态常量

抽象类中可以定义静态常量

接口中不能包含构造函数,抽象类中可以

抽象类具有类的属性

接口回调: 接口变量可以存放实现该接口子类的对象的实例,即存放对象的引用.

使用接口实现程序设计可以实现“开闭原则”,即对扩展开放,对修改关闭.

猜你喜欢

转载自blog.csdn.net/yanglong_blog_/article/details/75633718
今日推荐