java中的面向对象的三大基本特征是:【封装】、【继承】、【多态】java
封装:对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性)this
- 属性(bean、pojo):私有的private,有set和get方法
- 方法:公开或私有 ,public/private
- 方法声明和实现(interface,implements)
继承:共性放到父类,特性放到子类;父类 --> 子类 --> 通常spa
- 关键字: extends
- java中一个类最多只能有一个直接的父类,即单继承(具备简单性、树形结构)
- tip:java中要实现多继承,经过接口来实现。
- 父类中全部属性和方法都能继承给子类;父类中的私有方法不能继承给子类。
- java中的访问修饰符
访问修饰符 |
访问权限 |
继承 |
private |
本类 |
不能继承 |
default |
本类+同包 |
同包子类能够继承 |
protected |
本类+同包+不一样子包 |
能够继承 |
public |
公开 |
能够继承 |
(1)分配空间
(2)递归地构造父类对象
a. 父类 初始化属性
b. 父类 构造方法
(3)初始化属性
(4)调用构造方法对象
- super
super() 调用父类的构造方法,只能出如今构造方法的第一行
super.方法名 super表示父类的对象,经过它去调用父类的方法
注意:在写类的时候,必定要写默认无参的构造方法,若是一个构造方法的
第一句既不是this(),也不是super()时,那么就会在这里隐含的调用
他的父类的无参的构造方法,即隐含的有super()。
多态:运行时多态(子类的对象放在父类的引用中,例如 Animal a=new Dog,子类对象当父类对象来使用。)继承
- 多态原则:
(1)对象类型不变
(2)只能用引用调用其引用类型中定义的方法
(3)运行时,根据对象的实际类型去找子类覆盖以后的方法
例子:
有Animal类中有eat()和sleep()两个方法,sleep()中睡8小时;子类Dog中有
eat()方法,sleep()方法中睡6小时,还有wangwang()方法。
现建立Animal a=new Dog(); 不能调用a.wangwang(),调用a.sleep()输出睡6小时。
- 对象的强制转换 :
格式: 引用 instanceof 类型
引用所指的对象是否与类相符,返回值boolean值。
用法:
Animal a=new Cat();
if(a instanceof Dog)
{
Dog d=(Dog)a;
d.wangwang();
}
说明:若是只有Dog d=(Dog)a;运行时错误,由于a是Cat而不是Dog (多态原则第一条)
- 多态的灵活变换 (1)用于参数列表上: public void m(A a){} 能够用A类的任何子类对象做为参数 (2)用在返回值上: public A m(){} 这个方法可能返回A类的任何子类对象