-
Java面向对象的三大特性:封装,继承,多态
1.继承(在原有类的基础上< 属性和方法>,构造一个新的 类。)
在 java 当中,用extends关键字来表示一个类继承了一个类。
父类更通用更抽象,子类更特殊更具体(因为父类相对于子类 而言,父类中有的方法,子类全都有;而子类有的属性和方法父类 未必有,所以子类更具体,父类更抽象)。
顶层是Object类,所以当你创建一个类时,都在间接或直接的 继承了Object父类,即你创建的类永远为子类
继承的特点:子类继承了父类的成员(即属性和方法),虽然 父类中私有的属性和方法也被继承了,但是访问不到。
2.引用类型比较方法
在object类中equals方法只能用来比较地址是否一样
String可以使用equals比较地址是因为它重写了equals方法
public class Father(){} // 父类
public class Son extends Father(){} // 子类
权限修饰符:private只支持同一类里面的;
friendly:支持同胞和本类;
protected:支持同胞 父子 本类;
public:全部都支持。
3.重写 与 重载
3.1重写:
当子类继承父类的方法,这些方法不满足自身需求时,子类可 以重写从父类继承的方法:
- 返回类型、方法名、参数与父类完全相同。
方法重写要求:返回值类型相同或者父类返回值类型的子类 类型,方法名称相同
效果:子类在调用方法时,会调用自身重写的方法,父类的方 法就被覆盖了不可见。
3.2重载:
在同一类中方法名称相同,方法的参数列表不同,和返回值无 关
参数列表不同的表现形式:参数的类型不同,个数不同,位置不 同,参数列表不同和参数名称没有关系
4.equals 与 == 以及 instanceof的区别
"==" 比较基本数据类型时比较的是表面值内容,而比较两个 对象时比较的是两个对象的内存地址值
对于equals方法,注意:equals 方法不能作用于基本数据类 型的变量,如果没有对equals方法进行重写,则比较的是引用类型 的变量所指向的对象的地址。
-
概括:
在基本数据类型比较值内容时 ”=“
引用类型时:如果 equals 重写则比较值内容 equals不重写则比较地址
4.instanceof:用来判断内存中实际对象A是不是B类型,一般用 来做类的类型判断。如果是同类,则使用强转。
5.super 关键字
super关键字和this关键字的特点类似
super关键字代表的是父类对象的引用(保存的是父类引用对象 的内存地址)。
**this**关键字代表的是当前对象的引用(保存的是当前对象的内 存地址)。
当子父类的成员出现同名的时候,可以通过super关键字来区 分。子类的构造方法中,通过super关键字来调用父类的构造方法, 且必须是子类构造方法中的第一条语句。
当我们产生子类对象的时候,肯定先要去调用父类的构造方法 来产生父类的对象,再产生子类对象。
6.出入多态
多态存在的前提
- 要有继承
- 要有重写
- 要有父类引用指向子类对象
- 多态的特性:扩展性较强