什么是面向对象
面向对象编程(Object-Oriented Programming,简称OOP)
面向对象编程的本质是:以类的方式组织代码,以对象的组织(封装)数据。
核心思想是抽象,三大特性为:封装,继承,多态。
方法调用
静态方法可以直接调用;非静态方法需要实例化类才能直接调用。(记住需要导入类,import)
构造器
主要两种功能:
1.使用new关键字,必须要有构造器,本质在调用构造器
2.用来初始化值,通过有参构造来实现;无参构造默认是不显示自带的,一旦定义有参构造,
无参构造就必须显示定义。
封装
高内聚,低耦合:类的内部细节操作只能让自己完成(高内聚),仅暴露少量的方法给外部使用(低耦合)
封装就是禁止其他人直接访问类内的数据,而应该通过接口来访问。利用关键字private
使用get set方法来设置和获取类数据。
优点:
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.系统可维护性增加
继承
关键字:extands;继承就是扩展父类
继承是类和类之间的关系,除此之外的关系还有依赖,组合,聚合;
子类一旦继承父类就继承了所有非私有方法。在java中都默认直接或者间接继承Object类。
super
调用父类的非私有方法,当子类和父类存在同名方法时,使用super调用父类的重名方法。
子类的无参构造默认自带父类的无参构造方法,此时super()必须在子类构造器的第一行,否则会报错。
super和this不能同时调用构造方法。
this:本身调用者的这个对象
super:调用父类对象的引用(只能在继承条件下才能使用)
方法重写
重写都是方法的重写,和属性没有关系。当方法用static修饰时,方法的调用之和左边的数据类型有关。当方法不用static修饰时,方法的调用和右边的数据类型有关。
假设a继承b;
A a=new A();
a.test();
B b=new A();
b.test();
这两句 中的运行结果是不一样的,一个是A类中的test,一个是B类中的test方法。
对象能执行的方法只与左边的有关。