3种类型(类、接口、枚举)
4个修饰符(private|protected|public、final|abstract、static)
5个成员(成员变量、方法、构造器、初始化块、内部类)
5.1类和对象
5.1.1定义类
[修饰符] class 类名 [extends 父类]
{
//5大成员
}
修饰符:
public 、final|abstract
★定义成员变量
[修饰符] 类型 变量名 [=初始值];
修饰符:
private|protected|public、final、static
★定义方法
[修饰符] 返回值 方法名 (形参列表)
{
语句
}
修饰符:
private|protected|public、final|abstract、static
方法体里多条可执行语句之间有严格的执行顺序,排在方法体前面的语句先执行,后面的后执行。
★定义构造器
[修饰符] 构造其名(形参列表)
{
语句
}
修饰符:
private|protected|public
构造器是一个特殊的方法,定义时比方法少一个返回值类型。
如果没有显示定义构造器,系统将提供一个默认的无参构造器。
★定义初始化块
[修饰符]
{
语句
}
修饰符:
static
★类的作用
- 定义变量
- 创建对象
- 调用类方法或访问类变量
- 派生子类
5.1.2对象的产生和使用
★对象的作用
-访问对象的实例变量。
-调用对象的实例方法。
类或实例访问方法或成员变量的语法:类.类变量|方法,或者实例.实例变量|方法。
5.1.3 对象、引用和指针
5.1.4 对象的this引用
根据this出现的位置不同,this作为对象的默认引用有两种情形。
this引用:this.实例变量|实例方法
this调用:在构造器中,一个构造器调用另一个构造器。this()
类中的一个成员直接调用另一个成员,可以省略this前缀。
static方法可以用类调用,用类调用时this无法指向合适的对象,因此static方法不能使用this引用→static方法不能访问非static成员→静态成员不可以访问非静态成员
5.2方法详解
5.2.1方法的所属性
- 方法不能独立定义,方法只能在类体里定义。
- 从逻辑意义上看,方法要么属于该类本身,要么属于该类的一个对象。
- 永远不能独立执行方法,执行方法必须使用类或对象作为调用者。
static方法用类调用,无static方法用对象调用
5.2.2方法的参数传递机制
方法的参数传递方式只有一种:值传递,就是将实际参数值的副本传入方法内,二参数本身不会受到任何影响。
5.2.3 形参个数可变的方法
个数可变的形参只能处于形参列表的最后。也就是说,一个方法最多只能有一个个数可变的形参。
5.2.4 递归方法
5.2.5 方法重载
在同一个类,方法名相同,形参列表不同,叫做方法重载。
和返回值类型、修饰符等没有关系。
5.3 成员变量和局部变量
变量 | |||
---|---|---|---|
成员变量 | 实例变量(没有static修饰) | 类变量(有static修饰) | |
局部变量 | 形参 (方法签名中定义的变量) | 方法局部变量(在方法内定义) | 代码块局部变量(在代码块内定义) |
判断变量:先看位置,再看static。
成员变量用类调用,实例变量用实例变量调用。虽然实例变量可以调用类变量,但是最好不要这么做。
5.4 隐藏和封装
5.4.1 理解封装
5.4.2 访问控制符
private | default | protected | public | |
---|---|---|---|---|
同一个类中 | √ | √ | √ | √ |
同一个包中 | √ | √ | √ | |
子类中 | √ | √ | ||
全局范围内 | √ |
5.4.3 pachage、import、import static
星号只能代表类,如import 包名.*
静态导入使用import static,静态导入*号可以代表导入类的所有静态成员。
5.4.4 Java的常用包
- java.lang:java语言的核心类,如String、Math、System、Tread等,无需导入,系统会自动导入这个包下的所有类。
- java.util:Java的大量工具类/接口和集合框架类/接口,如Arrays和List,Set等。
- java.net:网络编程相关的类/接口。 java.io:Java输入/输出相关的类/接口。
- java.text:Java格式化相关的类。 java.sql:Java进行JDBC数据库编程的相关类/接口。
5.5 构造器
作用:初始化对象
5.5.1 使用构造器执行初始化
如果程序没有提供构造器,系统会自动创建一个无参构造器。
想让系统创建对象是就为该对象啊的实例变量显式指定初始值,就可以通过构造器来实现。
5.5.2 构造器重载
this调用只能放在构造器的第一行。
5.6 类的继承
5.6.1 继承的特点
Java是单继承
继承的语法:
[修饰符] class 子类名 extends 父类名
{
//类定义部分
}
5.6.2 重写父类方法
子类包含于父类同名方法的现象叫做方法重写(override),方法重写遵循“两同两小一大”规则:
“两同”:方法名相同。
“两小”:返回值类型,子类方法声明的异常应比父类小或相等。
“一大”:子类的访问权限更大或相等。
5.6.3 super限定
super限定:super.父类实例变量|实例方法
super调用:super(父类构造器对应参数),子类构造器一定要调用父类构造器一次:创建任何对象,一定是从Object的构造器开始执行。
如果需要在子类方法中调用父类被覆盖(重写)的方法,则可使用super限定来调用父类被覆盖的实例方法。或者子类有和父类同名的实例变量,也可以使用super调用。
super和this一样,不能出现在static修饰的方法中。
5.7多态
5.7.1 多态性
父类名 变量 = new 子类构造器:
变量.方法(子类重写的父类方法)执行子类的方法。如果该方法父类没有,则编译不通过。
5.7.2 引用变量的强制类型转换
如上所说,如果要执行父类不包含的方法,如果需要进行向下转型。(子类)对象。
5.7.3 instanceof运算符
用于判断前面的对象是否是后面的类,或者子类、实现类的实例。是就ture,不是就false。
语法:对象 instanceof 类
## 5.8继承与组合 没有看,回去看。
5.9初始化快
5.9.1 使用初始化块
5.9.2 初始化块和构造器
实例初始化快:本质是构造器所有代码之前的代码;
5.9.3 静态初始化块
类初始化块,该类第一次运行时执行
静态初始化块不能访问非静态成员。