Java复习笔记+经验总结-03 继承与多态 接口与抽象类
来源:互联网 发布:《梦里花落知多少》 编辑:程序博客网 时间:2024/06/15 00:27
继承: 继承一般指晚辈从父辈那里继承财产,也可以说是子女拥有父母所给与他们的东西。继承是子类拥有父类的非私有成员,使用关键字extends来指明父类.
[修饰符] class子类名extends父类名
继承使用原则:
子类可以继承同包中由默认修饰符修饰的成员
子类不能继承被声明为private的成员
如果子类声明了与父类同名的成员变量,则子类隐藏了父类的成员变量
如果子类声明了一个与父类同名的方法,则称子类的成员方法重写(覆盖)父类的成员方法.
super: 父类指针, 子类中访问父类中被子类隐藏的成员时使用.
super可以掉用父类的构造函数: super([参数列表])
多态: 重载(编译时多态),重写(运行时多态).
重载: 方法名相同,参数个数,或者参数类型不同.
注意:方法返回值类型不能作为区分重载的标志.
重写(覆盖):子类方法名与父类的方法相同,称子类覆盖了父类的方法.
注意:子类不能覆盖父类中声明为final和static的方法
子类必须覆盖父类中声明为abstract的方法
子类覆盖父类中的方法,那么子类方法声明必须和父类一样.
向上转型:父类对象引用子类对象实体
注意:向下转型会出现问题,不安全,不建议使用.
抽象类: 抽象类不能被实例化,在定义抽象类时, class前加上abstract.
抽象方法: 抽象方法只有方法的声明,没有方法的实现.
注意:抽象方法不能使用private或static关键字修饰,只要有抽象方法,就一定要声明为抽象类.
抽象类的构造器不能用于创建实例,主要用于被子类调用.
final:
final可以修饰变量(成员变量,局部变量),被final修饰的变量表示不可改变.
final可以修饰引用类型,被final修饰的引用类型表示该引用类型指向的地址不可以改变,但是地址引用的对象实体是可以改变的.
注意: String, Math,包装类是final类,也称为顶级类.
使用final修饰的方法是不可以被重写的。
内部类: 成员内部类,局部内部类, 静态内部类,匿名内部类.
匿名内部类:
匿名内部类可以继承父类的方法, 也可以重写父类的方法.
匿名内部类可以访问外嵌类的成员, 匿名类中不能声明静态变量和静态方法.
使用匿名类时, 必须在某个类中使用匿名类创建对象.
使用匿名类时, 直接使用父类的构造方法.
接口: 接口是特殊的抽象类,接口中的方法全部是抽象方法,接口中的变量全部都是静态常量,接口用implements实现.
注意:接口可以被接口继承,一个接口可以多继承接口,类实现接口可以多实现.
如果多个接口中定义的常量名冲突,则使用接口名.常量解决冲突.
接口与抽象类:
接口与抽象类都不能被实例化
子类必须实现接口中的方法, 必须重写抽象类中的抽象方法.
接口制定了个模块间的标准, 体现的是一种规范.
抽象类作为多个子类的父类, 体现一种模板式的设计.
注意:接口中不能定义静态方法,只能定义静态常量
抽象类中可以定义静态常量
接口中不能包含构造函数,抽象类中可以
抽象类具有类的属性
接口回调: 接口变量可以存放实现该接口子类的对象的实例,即存放对象的引用.
使用接口实现程序设计可以实现“开闭原则”,即对扩展开放,对修改关闭.
- Java复习笔记+经验总结-03 继承与多态 接口与抽象类
- java--抽象类与接口,继承与多态
- java继承与多态之抽象类和接口
- 黑马程序员--java基础复习继承之抽象类与接口
- 继承与多态及抽象类与接口
- java面向对象—抽象类、接口与多继承
- java面向对象—抽象类、接口与多继承
- java面向对象—抽象类、接口与多继承
- java面向对象—抽象类、接口与多继承
- java面向对象浅析--抽象类、接口与多继承
- Java--继承与多态,抽象编程,接口与多态,接口回掉接口编程
- 继承,抽象与接口
- Java接口与抽象类学习笔记
- java学习笔记----抽象类与接口
- java基础-3-面向对象(3)-继承、抽象类、接口与多态
- java基础--继承下:抽象与接口
- 接口与抽象类与继承
- JAVA 继承基本类、抽象类、接口区别与联系
- 清算/报表/日终跑批程序之性能优化案例(一)
- centos7系统安装python3.6.2版本
- 最小二乘法简介
- Android——Handler机制
- iOS系统预览文件但不分享的实用技巧 (iOS10, QLPreviewController)
- Java复习笔记+经验总结-03 继承与多态 接口与抽象类
- 安装Elasticsearch 5.5.0 (Windows)
- HDU2376Average distance(树形dp|树上任意两点距离和的平均值)
- Linux下安装JDK 和TOMCAT
- PHP中单引号与双引号的区别
- String[]数组,ArrayList 和 LinkedList的区别
- 基于TCP下MSG_PEEK的套接字接受缓冲区的排队数据量分析
- Logstash学习总结(二) INPUT应用实例2
- windows下eclipse开发hadoop的坑