1.2 static关键字
在类中,用static声明的成员变量为静态成员变量。
1.2.1static 变量
Static方法也叫静态变量,通过“对象名.类名” 访问。也可以通过 “类名.变量名” 访问。推荐通过 “类名.变量名” 访问。
静态变量在类被载入时创建,只要类存在,静态变量就存在,不管对象是否被实例化。
1.2.2static方法
Static方法也叫静态方法,静态方法不能访问非静态方法和非静态成员变量,但是非静态成员方法可以访问静态成员方法和成员变量。推荐通过 “类名.变量名” 访问。
- 如果想在不创建对象的情况调用某个方法就把这个方法设为static。
1.2.3static块
构造方法用于对象的初始化。静态初始化块,用于类的初始化操作。
在静态初始化块中不能直接访问 非static成员。
当类被载入时静态代码块被执行,且被执行一次,静态代码块经常用来进行类的初始化。
作用:提升程序性能
1.3认识封装
1.3.1.封装
- 封装是面向对象的基本特征之一。
- 封装将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法实现对内部信息的操作和访问。
- 封装是面向对像编程语言对客观世界的模拟,客观世界中的属性均被隐藏在对象内部,外界无法直接操作和修改。
1.3.2实现封装
(1)将不能暴露的成员隐藏起来。例如,student类中的ID不能让其在类的外部直接赋值。实现方法就是将该成员定义为私有。
(2)用公共方法来暴露对该隐藏成员的访问,可以给函数直接加上修饰符public,将该方法定义为公共的。
注意:
- 私有成员只能在它定义的类的内部访问,在类的外部不能访问。
- 一般情况下,可以将成员变量定义为private的,通过public方法对其进行访问。
- 访问控制符级别:public>default>protected()>private。(java文件中只能有一个public类)
1.4使用包
1.4.1包
在java中类似于方法的管理类,这就是包(Package)。
在类的头文件加上“package 包名;”
注意:
- Package必须放在源代码的最前面
- 在java中推荐包名名字为小写字母
- 用命令运行包中的类 java 包路径.类名
1.5使用继承
1.5.1继承
继承是面向对象的重要特征。
语法:class 子类 extends 父类();
- 当类没有明确说父类的时候,object是此类的父类。
1.5.2实现继承
- Java不支持多继承(例如:class 子类 exdents 父类1,父类2~{})
- 在java中可以多成继承,A继承B,B继承C,C继承D。
1.5.3继承的底层本质
1.子类继承父类之后,实例化子类对象,系统首先会实例化父类对象。
2.在构造子类对象时,父类的构造方法,一定会先被执行。
3.如果子类没有用super()调用父类的构造方法,则父类中的无参数构造方法会被自动调用。
4.在子类的构造方法中,super(),必须写在第一行,传入的参数必须和父类的构造函数中的参数列表匹配。
1.6方法重写(override)
语法结构:子类中成员方法和父类中的成员方法的名称,参数列表,返回类型相同。
注意:
- 方法的重写(override)和重载(overload)是不一样的
- 重写的方法的名称,参数列表,返回类型必须相同
- 子类重写的方法的访问权限不能比父类的更加严格
1.7使用多肽
1.函数传入的形参可以是父类类型,而实际传入的可以是子类对象
2.函数的返回类型是父类类型,而实际返回的可以是子类对象
1.7.1父类和子类对象的类型转换
- 子类类型对象转换成父类类型:
Dialog dialog =new FontDialog;
- 父类类型对象转换成子类类型:
Dialog dialog =new FontDialog;
FontDialog fd=(FontDialog)dialog;
1.8抽象类和接口
1.8.1抽象类
用abstract修饰。
注意:
- 抽象类不能把实例化。
- 抽象函数必须被重写,除非子类也是抽象类
- 在抽象类中可以含有普通成员函数
1.8.2接口(interface)
Java中单继承,多接口。
语法:class 子类 extends implements 接口1,接口2…{}
1.9final关键字
1.用final修饰一个类,该类不能继承
2.用final修饰一个函数,该类在被子类继承的情况下,show函数不能被重新
3.用final修饰一个成员变量,该变量不允许被改变