一、面向对象三大特征:封装、继承、多态
二、封装:
1、封装两大特征:合理隐藏数据、合理暴露数据
2、把数据使用private修饰,可以通过定义一个public的方法把数据暴露出去
三、继承
1、java是单继承,但是可以间接继承,extends
2、在java中,任何类,除了Object,所有的类都有父类
3、子类可以继承父类的哪些属性和方法?
同一个包下:public、默认、protected
不同的包下:public、protected
访问:
同一个包下:public、默认、protected
不同的包下:public
4、重写/覆盖:override,继承关系中,子类的方法和父类的方法方法名相同,参数类型一致,返回类型相同,访问权限
子类不能比父类更严格:private > 默认 > protected > public @override
5、重载:在一个类中,方法名相同,参数类型不同,对返回值没有要求
6、构造方法是不能被继承,但是子类的构造方法一定会调用父类的构造方法(第一行)
如果子类没有显式调用父类构造方法,系统默认调用父类无参构造方法
如果父类没有无参的构造方法,子类必须显示调用父类有参的构造方法
7、super父类的,调用父类的属性-->super.属性名,调用父类的方法-->super.方法名(形参)
调用父类的无参构造方法-->super(),调用父类有参的构造器-->super(形参)
四、多态
1、向上转型:声明的时候是父类,实例化的时候是子类--> 父类类名 对象名 = new 子类的构造器
向下转型:声明的时候是子类,实例化的时候是父类--> 子类类名 对象名 = new 父类的构造器,不安全
2、使用多态的时候,调用的属性和方法都是父类的,如果子类重写了方法,则方法调用的是子类的,不能调用
子类存在而父类不存在的属性和方法
3、instanceof: 对象名 of 类名
五、实例化顺序:知道就可以了