一、面向对象设计思想的要点
二、类和实例
三、类的继承
四、包
五、访问控制
一、面向对象设计思想的要点:面向对象的要点就是进行分类,然后对数据和方法进行封装
类:- 类是具有共同属性和行为的对象的集合
- 类与对象的关系:类是对对象的抽象,对象是类的实例
- 类具有层次关系
类的含义:
- 在现实生活中,类是实际存在的东西,是一个实体
- 在计算机中,类是一片可标识存储区域
- 类包括数据和方法,面向对象就是将数据和方法封装起来,从而实现模块化和信息隐蔽
二、类和实例
1、类和实例- 类是具有相同属性和行为的对象的抽象
- 成员:字段和方法。字段是类的属性,又称为域;方法是类的行为,与属性有关的功能和操作
- 实例:类的具体的对象
- 构造函数是一种特殊的方法,其用来初始化类的一个新的实例
- 构造函数的名字与类相同,而且不返回任何的数据类型
- 如果没有定义任何构造函数,那么系统就会自动加上一个没有任何参数的构造函数,类字段被初始为默认值,比如int为0,String为NULL 注意String的默认值为NULL,也就是未初始对象,因为在java中String是对象
- 静态字段和静态方法:
- 静态字段和静态方法的申明方式只需要在方法和字段之前加上关键字static
- 静态字段和静态方法相当于是全局的字段和方法,其是针对类的
- 静态字段和方法可以通过对象实例来访问,也可以直接通过类名来访问,两种的结果是相同的,操作的是同一片内存空间
- 由于静态方法是属于类的,其不属于任何一个对象,所以在静态方法中不能访问实例的字段和方法,但是对象实例的方法可以访问静态字段和静态方法
三、类的继承
- 现实生活中的类呈现层级结构,Java提供继承来实现这个层级结构
- 使用关键字extends实现类的继承
- 类的继承,子类自动继承父类的字段和方法
- 同时子类可以在父类的字段和方法的基础上增加属于自己的字段和方法
- 但是特殊的是子类不能继承父类的构造函数
- 注意的是子类在构造函数的最开始的地方会调用父类的没有参数的构造函数,所以如果父类 定义了自己的构造函数,但是没有构造无参数的构造函数并且在子类中没有显式调用父类的构造函数,那么救护报错
- PPT上的例子还是很经典的
- this和super:
- 可以使用this在类的构造函数中调用本类中的其他的构造函数
- 可以使用super直接调用父类的构造函数
- this和super如果在构造函数中使用,那么只能是第一条语句,并且只能有一条,也就是 不能既使用this又使用super
- 隐藏:子类重新定义父类的字段和静态方法,父类的字段和静态方法被隐藏
- 覆盖:子类重新定义父类中的方法
- 重载:重载是函数名相同但是形式不同,也就是参数的类型或者参数的个数不同)
- 重载与覆盖的区别:覆盖是函数的形式完全相同,是原有方法的重新实现;重载是函数的形式不同,是原有方法的另一种实现
- abstract关键字
- abstract类:用abstract修饰的类称为抽象类,抽象类是不可以被实例化的
- abstrct方法:使用abstract修饰的方法称为抽象方法,其没有具体的实现,也就是使用的不是{}, 而是直接用“;”
- 抽象方法的目的是提供一个统一的接口,子类可以对父类的抽象函数全部实现或者部分实现,子类可以对抽象方法有不同的实现
- 抽象类可以不含抽象方法,但是某个类即使不使用abstract修饰,只要有抽象方法,那么其就是抽象类,所以如果子类只是实现 了父类的部分抽象函数,那么子类本身也是抽象类
- final关键字:
- final类:如果一个类被final修饰,那么这个类不能被继承
- final方法:如果某个方法被final修饰,那么这个方法就不能被子类覆盖
- final字段:一般使用static final来表示常量,在申明的时候同时赋值,那么其值就不能再改变了,如果没有复制,那么 该字段的值就是默认值
- 通常的final字段,只能进行一次复制,要么在申明的时候,要么在构造函数中,此后便不能再进行赋值。那么这么看来static有更严格的限制,也就是申明时复制 那么就永远不变了,没有赋值那么就是默认值永远不再改变了
四、包
包就是一堆类的集合,其中的类并没有要求需要有严格的逻辑关系,但是由于在同一个包中的类在默认情况下是可以互相访问的,所以一般就把同一个 工作中的类放在一个包中。如果要使用java中的包,那么要先导入,使用import语句五、访问控制
同一个类中 | 同一个包中 | 不同包中的子类 | 不同包中的非子类 | |
---|---|---|---|---|
private | yes | |||
默认 | yes | yes | ||
protected | yes | yes | yes | |
public | yes | yes | yes | yes |