万事万物皆对象!看得见的看不见的,只要实际存在,它就是对象!
比如你所在的公司,公司就是一个对象,公司中某个具体的雇员,他也是一个对象。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。
面向对象的编程思想就是把你需要解决的问题中的所有具体的东西,都看成一个对象,然后把所有具有相同性质的对象组成一个类,那些与问题无关的对象则忽略。即所谓的抽象。将现实世界中的事物抽象成对象,现实中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。
面向对象的三大特征:封装,继承,多态
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。在Java中类中成员的属性有:public, protected, <default>, private,这四个属性的访问权限依次降低。成员访问控制:
修饰符 | 同一个类 | 同一个包 | 子类 | 整体 |
---|---|---|---|---|
private | YES | |||
default | YES | YES | ||
protected | YES | YES | YES | |
public | YES | YES | YES | YES |
使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“基类”、“父类”或“超类”。
继承的过程,就是从一般到特殊的过程。
java类继承语法规则
< 修饰符> class < 子类名称> [extends < 父类>] {<属性和方法的声明>}
Java只支持单继承,不允许多重继承 一个子类只能有一个父类,一个父类可以派生出多个子类。
子类继承了父类,就继承了父类的方法和属性。
在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法。
因而,子类通常比父类的功能更多。在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”。
关于继承的规则:子类不能继承父类中私有的(private)的成员变量和方法。
多态
在Java中,子类的对象可以替代父类的对象使用
一个变量只能有一种确定的数据类型一个引用类型变量可能指向(引用)多种不同类型的对象
Person p = new Student();
Object o = new Person(); //Object类型的变量o,指向Person类型的对象
o = new Student(); //Object类型的变量o,指向Student类型的对象父类类型的变量可以指向子类的对象
一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法
Student m = new Student();
m.school = “pku”; //合法,Student类有school成员变量
Person e = new Student();
e.school = “pku”; //非法,Person类没有school成员变量
属性是在编译时确定的,编译时e为Person类型,没有school成员变量,因而编译错误。本篇只是写了关于面向对象的概念和一些特性,更多详细见下篇---高级类特性
(csdn排版太痛苦- -)