面向对象三大特性

面向对象三大特性

封装

概念:属性私有化(private),提供setXXX和getXXX。
作用:保证数据的合理。
一般情况下,我们的程序设计要追求"高内聚,低耦合"
    高内聚就是类的内部数据操作细节自己完成,不允许外部干涉
    低耦合:仅暴漏少量的方法给外部使用。
封装的意义: 
	 1. 提高程序的安全性,保护数据
     2.隐藏代码的实现细节
     3.统一接口
     4.系统可维护增加了

继承

概念:类与类之间,特征和行为的赠与或获得。
满足继承关系的前提:二者必须具备is a关系。
语法:class 子类 extends 父类{}
创建子类对象 = 父类共性 + 子类独有
继承的好处:减少代码的冗余,提高代码的复用性。
继承的特点:
	java只支持单继承,不支持多继承,但可以多层继承,形成集成体系结构。
    子类继承了父类,就会拥有父类的所有方法

不可被继承

1.构造方法
2.private修饰的属性和方法
3.父子类不在同一个package中,使用default修饰的属性和方法

Object类

概念:在java中,所有的类都默认直接或间接继承Object类
特点:
	1.所有的类要么直接继承要么间接继承。
	2.所有的对象都可调用Object类中的方法。
	3.Object可以作为形式参数:能够接收任意对象(引用数据类型)。
	4.Object可以作为返回值类型:能够返回任意对象(引用数据类型)

super关键字

用法:
	super.成员方法():表示调用父类中的成员方法
	super.属性:表示调用父类的属性
	super()和super(实参):表示调用父类的构造方法
注意:如果构造中没有this()或者this(实参)或者super(实参),每一个构造方法中首行都隐式存在super()。

super和this的区别

代表的对象不同:

	this:本身调用者这 个对象

	super:代表父类对象的应用

前提:

	this:没哟继承也可以使用	

	super:只能在继承条件才可以使用

构造方法:

	this() ; 本类的构造;

	super():父类的构造!

方法的重写

重写需要有继承关系,子类重写父类的方法!
重写都是方法的重写,和属性无关
    1.方法名必须相同
    2.参数列表必须相同
    3.修饰符:范围可以扩大但不能    public>Protected>Default>private
    4.抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException --> Exception(大)
重写,子类的方法和父类必须要一直:方法体
为什么要重写?
	父类的功能子类不一定需要,或者不一定满足!

多态

多态就是方法的多态
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)
概念:父类引用指向子类对象。
注:  父类引用只能调用父类中所定义的属性和方法,子类独有的属性和方法不可调用。
	二者必须存在继承关系
多态中的方法覆盖:
	子类覆盖父类中的方法,使用父类引用调用该方法,执行的是覆盖之后的
多态存在的条件
1. 有继承关系
2. 子类重写父类方法
3. 父类引用指向子类对象
多态的应用
场景一:父类引用应用在形式参数上,能够接收 本类类型 + 所有子类类型。
场景二:父类类型应用在返回值类型上,能够返回 本类型 + 所有子类类型。
好处:
	降低耦合性
	屏蔽子类间的使用差异
向上转型、向下转型
向上转型(装箱):父类引用中保存的是子类对象。
    	装箱:将基本类型用它们对应的引用类型包装起来
		举例:Animal a = new Dog();
		注:父类引用只能调用父类中的属性和方法。
		
向下转型(拆箱):将父类引用中所保存的真是类型强制转换为自身类型。
    	拆箱:将包装类型转换为基本数据类型
		举例:Dog d = (Dog)a;
		注:只有转换为子类真实类型,才可以调用子类中独有属性和方法。
instanceof
语法:引用 instanceof 类型
作用:判断引用中保存的真实类型是什么
原文地址:https://www.cnblogs.com/lhy8116/p/14186229.html