1.面向对象的三个基本特征
面向对象的三个基本特征是:封装、继承、多态。
封装
封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承
继承是面向对象程序设计的一个重要特征,它是通过继承原有类派生出的子类进而构造出更为复杂的子类,子类既有新定义的行为特征,又继承了原有类的行为特征。
语法
[修饰符] class 子类名 [entends 父类名] {
//类定义部分
}
在使用继承的特性时,需要注意的是,子类可以继承父类中的访问权限是:public,protected,default的成员变量和方法。
!注意
JAVA中的继承为单继承,即一个子类只能有一个直接的父类。
重载
是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
提醒
构造方法也可以实现方法的重载。
重写
子类扩展了父类,子类是一个特殊的父类。子类以父类为基础,额外增加新的属性和方法。
重写覆盖问题
覆盖,是指子类重新定义父类的虚函数的做法。
多态
多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
引用变量的强制类型转换
强制类型转换时需要注意以下两点:
(1)基本类型之间的转换只能在数值类型之间进行,此处数值类型包括整数型,字符型和浮点型。但数值类型和布尔类型之间不能进行类型转换。
(2)引用类型之间的转换只能在具有继承关系的两个类型之间进行,如果是两个没有任何继承关系的类型,则无法进行类型转换,否则编译时会出现错误。如果试图将一个父类实例转换成子类类型,则此对象必须是子类实例,即编译时类型为父类类型,而运行时类型是子类类型,否则将在运行时引发ClassClassException异常。
提醒
将子类对象赋给父类引用变量时,被称为向上转型,这种转型总是可以成功的,这也从侧面证实了子类是一种特殊的父类。这种转型只是表明该引用变量的编译时类型时父类,但实际执行其方法时,依旧表现出子类对象的行为方式。但是,将一个父类对象赋给子类引用变量时,就需要进行强制类型转换,而且还可能在运行时产生ClassClassException异常,使用instanceof运算符可以让强制类型转换更安全。
!注意
使用instanceof运算符时,需要注意instanceof运算符前面操作数的编译时,类型要么与后面的类相同,要么与后面的类具有父子继承关系,否则会引起编译错误。
说明
(type)运算符为前置类型转换运算符,type表示将要转换的类型。
再见!!!!!!!!!!!!!