如果提到三大特征,那么就是:继承、封装、多态
如果提到四大特征,那么就是:继承、封装、多态、抽象
继承
- 概念:子类通过extends关键字可以继承父类中(除构造方法)的所有类中的成员
- 作用:代码复用,简化代码
- 可以从父类继承的成员:除构造方法都可以
但对于private修饰的成员,必须通过间接(其他public、protected修饰的方法)方式访问 - 类和类之间是单继承,可多重继承;
所有的类都是隐式继承Object
=======================================================================
封装
- 概念,就是通过访问权限修饰符 修饰类或者类中的成员,而达到保护内部成员安全的目的
- 作用:保护内部数据
- 访问权限修饰符:控制访问范围
public:公共的,最大权限,被其修饰的成员,在任意目录下,都可以访问到 (所有类)
protected:受保护的,在同包类和子类中都可以访问
默认不写:只能在同包类中访问
private:私有化的,被其修饰的成员,只能在当前类中访问 - 封装四步:满足这个标准,就是一个JavaBean
- 注意事项:
不是只有private才叫封装,private只是最大限度的封装而已。
单一职能原则:功能最小化,不要想着一个方法写完所有的功能 .代码复用率高
=======================================================================
多态
- 概念:就是创建对象的时候用父类变量装子类对象(向上造型)
- 作用:屏蔽了子类的差异性,提高了程序的扩展性
- 向上造型:用父类对象装子类
父类类型 对象名 = new 子类类型(…);
对象名.方法();//如果子类重写了方法,则会执行对应子类重写后的方法,不能调子类独有的方法。 - 向下造型 :强制类型转换(父转子),转换后可调用子类的独有方法
语法:子类类型 变量 =(子类类型)父类变量/父类类型值;
在向下造型的时候,应该先进行判断,使用instanceof或者父类变量.getClass() == 子类类型.class - 多态调用方法的优先级顺序:本类里找不到,向上找父类的,先是找父类的方法,然后再找父类的参数的本类方法,最后是父类的参数的父类方法
eg:找show(O)
this.show(O)—>super.show(O)—>this.show((super)O)—>super.show((super)O)
=======================================================================
抽象
- 概念:没有任何方法体(就是没有大括号),且用abstract修饰的方法,()后用分号。
- 作用:从语法层面强制所有的子类重写该方法,保证业务逻辑的合理性