面向对象
一、什么是面向对象?
- 对象:把相关的数据和方法组织为一个整体来看待
- 面向对象:利用对象进行软件开发
- Javabean 用来描述一类事物的属性和行为
public class 类名 {
私有化成员变量
无参构造
带全部参数的构造
get/set方法
...
}
类名 对象名 = new 类名();
二、类和对象
- 定义一个类描述一类事物
- 创建对象,记录单独个体的所有信息
- 描述一类事物的类叫 JavaBean 类
- 带有 main 方法的类叫测试类
三、面向对象中的数据安全问题
(一)private
- 是一个权限修饰符,可以修饰成员变量和成员方法
- 特点:一旦被 private 修饰,只能在本类中才能访问,外界无法访问
- 提供 set...(参数),给成员变量赋值,用 public 修饰
- 提供 get... (参数),获取成员变量的值,用 public 修饰
(二)this
- 就近原则
在方法中直接使用变量查找顺序:先找局部变量,再找成员变量
- this 的作用?
可以区别成员变量和局部变量
四、构造方法
(一)特点
- 方法名与类名相同,大小也要一致
- 没有返回值类型,连 void 都没有
- 没有具体的返回值(不能由 return 带回结果数据)
(二)执行时机
- 创建对象的时候由虚拟机调用,不能手动调用构造方法
- 每创建一次对象,就会调用一次构造方法
(三)注意事项
- 如果没有定义构造方法,系统会给出一个默认的无参数构造方法
- 如果自己写了任意构造方法,系统将不再提供默认的构造方法
- 带参构造方法和无参构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载
- 习惯:无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法
五、static关键字
(一)static修饰成员变量
- static:表示静态,是Java的修饰符,用来修饰成员变量和成员方法
- 静态变量:呗这个类所有对象共享,属于类,随着类的加载而加载,优先于对象而存在
(二)static修饰成员方法
- 静态方法只能访问静态变量和其他的静态方法
- 非静态方法可以访问静态变量或者静态方法,也可以访问非静态变量和非静态方法
- 静态方法中是没有this关键字
- 静态只能访问静态,非静态可以调用所有,静态方法无this
六、final关键字
- 只能被赋值一次,一旦赋值,无法再次修改
- 常量名大写,多个单词之间用下划线隔开
七、枚举
- 枚举:一个特殊的Javabean类,这个类是有限个
- 定义格式:
public enum 枚举类名{
枚举项1, 枚举项2, 枚举项3;
属性
行为
}
- 每一个枚举项,都是该枚举类的对象
- 枚举项在底层其实就是常量,默认用public static final修饰
- 枚举项的第一行上必须是枚举项,枚举项之间用逗号隔开,以分号作为结尾
- 枚举项的构造方法必须是private修饰,不让外界创建本类的对象
- 编译器会给枚举类新增两个默认存在的方法:values(),valueof()
八、继承
(一)什么是继承?继承的好处?
- 继承是类与类之间的一种父子关系
- 减少冗余代码,提高代码复用性
- 继承的格式:
Public class 子类 extend 父类{}
- 子类可以在父类的基础上新增其他功能,子类更强大
(二)继承的特点
- Java只能单继承,不支持多继承,但是支持多层继承
- 直接继承的父类叫做直接父类,简介继承的父类叫做间接父类
- Java中所有的类都直接或间接继承于Object类
九、多态
- 多态是事物的多种形态
- 多态的表现形式:
Fu f = new Zi();
- 多态的前提是有继承/实现关系,有父类引用指向子类对象,有方法的重写
十、抽象类和抽象方法
-
什么是抽象类和抽象方法?
(1)多个子类抽取共性时,无法确定方法体,就把父类中的方法定义为抽象,强制让子类按照某种格式重写。
(2)抽象方法所在的类,必须是抽象类。 -
抽象类和抽象方法的格式?
public abstract 返回值类型 方法名(参数列表);
public abstrzct class 类名{...} -
继承抽象类有哪些要注意?
(1)抽象类不能实例化
(2)继承抽象类,要么重写抽象类中所有的抽象方法
(3)要么子类也是一个抽象类
十一、接口
- 接口:接口就是一个规则,而且时独立于继承体系以外的规则。
- 格式:关键字interface来定义
public interface 接口名 - 使用:接口和类之间是实现关系,通过implements关键字来表示
public class 类名 implements 接口{...} - 注意点:
(1)接口不能实例化
(2)接口的子类(实现类),要么重写接口中所有的抽象方法,要么实现类是一个抽象类
(3)一个类可以实现多个接口,也可以在继承一个类的同时,实现多个接口
public class 类名 implements 接口1, 接口2{...}
public class 类名 extend 父类 implements 接口1, 接口2{...}
十二、内部类
- 内部类:写在一个类里面的类
- 一个类表示的实物是另一个类的一部分,切单独存在没有意义是用到内部类
- 匿名内部类:隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置
(1)作用:在继承一个类或实现一个接口的时候少写一个文件
(2)定义格式:
new 类名或者接口名(){
重写方法;
};
(3)匿名内部类等价于没有名字的java类 + 实现接口/继承类 + 重写方法 + 创建对象
(4)使用场景:如果实现类只要使用一次,就可以实现匿名内部类简化代码
浙公网安备 33010602011771号