继承的使用限制
1 Java只能单一继承,但是可以实现多个接口和多层继承
2 子类对象在构造之前一定会先调用父类的构造,确保父类实例化
3 子类在继承父类时,理论上会继承父类的全部操作,但是私用属性不能通过子类直接调用
override
定义:当子类定义了和父类一样的方法(方法名字,返回类型,参数个数,参数类型均一样)就称为方法的ovrerride
限制:
父类的private方法不能被ovrerride
子类ovrerride的方法,不能比父类的方法有更严格的访问权限 public protected private
对于父类的某一方法在子类中用相应override方法,如何在子类中调用父类的该方法?
super.方法名(参数列表)
overloading 和 override 的区别:
作用范围: 一个类里里面 继承关系中
定义:一个类里面方法名相同,参数个数或参数类型不同 方法完全一摸一样
权限 无 子类方法不能比父类方法更严格
final
1 final定义类 final所定义的类不能被继承
2 final定义方法,final所定义的方法不能被重写
3 final定义属性,final所定义的属性不能被改变
多态
1 override and overloading
2 父子类对象的转换
父类 父类对象 = 子类实例 (向上转换 自动进行)
子类 子类对象 = (子类) 父类对象 (向下转型 强制进行) 必须发生向上转型后才可以发生向下转型
由于父类对象向子类对象转型的特殊性:instanceof
利用此关键字可以判断某一个对象是否是制定类的实例
运用实例:对象 instanceof 类 返回boolean类型
抽象类
一种明确定义子类需要腹泻方法,且自身不能实例化的类。更严格的要求能长生更规范的代码风格
抽象类的限制:
1 必须有子类,
2 子类必须实现抽象类的抽象方法
3 依靠向上转型,可以完成抽象类对象的实例化
4 局限于单继承,且不能使用final
接口
接口的产生打破了java类单一继承的局限,一个类只能有一个父类,但是可以实现多个接口,接口可以理解为一种特殊的类:
在jdk1.8之前,接口只能包含全局常量和抽象方法。用interface标志接口
接口的限制
1 接口必须要有子类
2 接口的子类必须实现接口的全部抽象方法
3 依靠向上转型,可以完成接口的实例化
看到这里是不时发先接口和抽象类很相似?
Object类:
Object类是所有类的父类,也就是说Object可以接受所有类的对象(依靠子类向上转型),但是Java开发中Object实际上可以接受所有引用对象:数组,类,接口
Object类重要方法toString()
如果直接打印一个对象,则就是该对象的toString()方法。所以有必要的时候可以重写toString()方法
基本数据类型和其包装类
java设计:一切皆对象。
但是基本数据类型不是对象,为了解决矛盾,将基本数据类型进行了一次封装
byte(Byte) short(Short) int(Integer) long(Long) double(Double) float(Float) char(Character) boolean(Boolean)
基本数据类型和其包装类可以自动完成装箱和拆箱操作
例:Integer integer = 10 ; //自动装箱
int obj = integer ; //自动拆箱
基本数据类型包装类的开发运用
完成和String数据类型的转换
String类型转为基本数据类型
例 :String str = "12306" ;
Int obj = Integer.parseInt(str) ;
注:如果这里str字符串包含的不全是数字,则会出现NumberFormatException
基本数据类型变为String类型数据
例:int obj = 100 ;
String str = String.valueOf(obj) ;