java 拥有四个基本特性。
抽象
- 将问题领域的事物抽象为 对象
- 将拥有相同属性和行为的对象抽象为 类
- 将类中相同的属性和行为的类抽象为 父类
抽象包含两个方面,
一个是数据抽象 即 对象的属性
一个是行为抽象 即 对象的方法
封装
隐藏 对象的属性和实现细节,针对性的的暴露接口。
优点:便于使用者使用,避免使用者修改其内部结构
原则:
- 将所有属性封装
- 尽可能隐藏对象的操作,对外提供简洁的接口
权限关键字
- private 本类 可以访问
- default 本类、同包名 可以访问
- protected 本类、子类、同包名 可以访问
- public 任何地方 可以访问
继承
子类和父类之间的继承关系,子类可以获取到父类的属性和方法。
注:关于子类能否继承父类的私有方法?
从语言角度上说:JDK官方文档明确说明子类不能继承父类的私有方法;
但从内存角度来说,jvm在实例化子类对象之前,会先在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类对象。所以子类确实拥有父类所有的属性和方法,但是父类中的私有方法子类无法访问
多态
允许将子类类型的指针赋值给父类类型的指针。
多态性使得能够利用同一类(父类)引用不同类的对象,以及根据所引用对象的不同,以不同的方式执行相同的操作。
多态实现包括两种方式:重载和重写
重载
一个类中可以拥有两个方法名相同的函数,但是这两个函数中 参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同。
重写
重写一般指子类重新实现父类方法的情况: 父类和子类的方法只有实现逻辑不同,父子拥有一致的参数表和返回值。