什么是面向对象?为什么要有面向对象?
把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。
随着开发需求的不断变化,由原来的面向过程开发走向面向对象开发,面向对象更符合人类的思维,以面向对象思想开发出的产品具有可维护、可移植、可复用。
1、对象:人们要进行研究的任何事物,从简单的整数到复杂的飞机均可看做对象。
2、类:描述同一类型的对象的抽象概念,类中定义了这一类对象的所应有的静态、动态属性。类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
3、封装:每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因为对象不必依赖其他对象来完成自己的操作
4、继承:可以简单理解为父亲和儿子之间的关系
5、多态:表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。(父类引用指向子类对象)
类命名规则
1、类名的首字母大写
2、变量名和方法名首字母小写
3、使用驼峰标识
方法重载
方法重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。而类的构造方法和其他方法也一样,可以重载。
This关键字
1、在类的方法定义中使用的this关键字代表使用该方法的对象引用
2、当必须指出当前使用方法的对象是谁时要使用this关键字
3、有时使用this可以处理方法中成员变量和参数重名的情况
4、this可以看成是一个变量,它的值是当前对象的引用
Static关键字
1、在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一个
2、用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员
3、可以通过对象引用或类名(不需要实例化)访问静态成员
Package和import语句
为了便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java引入包的机制,提供类的多重类命名空间。用import来引入需要的类所在包。
类的继承和权限控制
Java只支持单继承,不允许多继承。Java中使用extend关键字来实现继承机制。而接口却实现了多重继承机制。这是接口优于与继承机制地方。
权限控制如下图
方法的重写
在子类中可以根据需要对从基类中继承来的方法进行重写(override)
重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型
重写方法不能使用比被重写方法更严格的访问权限
Super关键字
在Java中使用super来引用基类的成分
Object类
是所有java类的根基类,如果在类的生命中未使用extends关键字指明其基类,则默认基类为object类。
对象转型
一个基类的引用类型变量可以“指向”其子类的对象
子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之为向下转型(downcasting)
抽象类
用abstract关键字修饰一个类时,这个类叫做抽象类。用abstract修饰一个方法时,这个方法为抽象方法。
含有抽象方法的类必须声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
抽象类不能被实例化。
抽象方法只需声明,而不需实现。
Final关键字
Final变量的值不能被改变。Final的方法不能被重写。Final类不能被继承。
接口
接口是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。