#P174-P181 2022-01-23 #P182-P188 2022-01-24 #P189-P195 2022-01-26 #P196-P202 2022-01-27
#P203-P212 2022-02-15 #P213-P218 2022-02-17 #P219-P221 2022-02-18 #P222-P230 2022-02-23
#P260-P267 2022-03-03 #P280-P282 2022-03-07 #P283-P293 2022-03-15 #P294-P300 2022-03-20
#P330-P337 2022-03-26 #P338-P353 2022-03-30 #P354-P365 2022-03-31
一、java基本元素(类和对象)
类:对一类事物的描述,是抽象的,概念上的定义。
对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)。
java类的成员:属性、方法、构造器;代码块、内部类。
(非static的类存放在堆空间中)
- 类的成员一:属性(成员变量)
- 类的成员二:方法
方法也即是函数。定义方法。
1、方法的重载:
2、可变个数的形参
说明:
1. 声明格式:方法名(参数的类型名 ...参数名)
2. 可变参数:方法参数部分指定类型的参数个数是可变多个:0个,1个或多个
3. 可变个数形参的方法与同名的方法之间,彼此构成重载
4. 可变参数方法的使用与方法参数部分使用数组是一致的,所以二者不能共存
5. 方法的参数部分有可变形参,需要放在形参声明的最后
6. 在一个方法的形参位置,最多只能声明一个可变个数形参
方法参数的值传递机制:
1、内存结构:栈(存放局部变量)、堆(存放new出来的结构:对象(非static的)、数组)
2、变量:成员变量、局部变量(方法内、方法形参、构造器内、构造器形参、代码块内)
- 类的成员三:构造器
根据参数不同,构造器可以分为如下两类:
隐式无参构造器(系统默认提供)
显式定义一个或多个构造器(无参、有参)
注 意:
- Java语言中,每个类都至少有一个构造器
- 默认构造器的修饰符与所属类的修饰符一致
- 一旦显式定义了构造器,则系统不再提供默认构造器
- 一个类可以创建多个重载的构造器
- 父类的构造器不可被子类继承
- 类的成员四:代码块
代码块(或初始化块)的作用:对Java类或对象进行初始化
代码块(或初始化块)的分类: 一个类中代码块若有修饰符,则只能被static修饰,称为静态代码块 (static block),没有使用static修饰的,为非静态代码块。
- 类的成员五:内部类
二、OOP的三大特性
特性一、封装
特性二、继承
- 子类继承了父类,就继承了父类的方法和属性。
- 在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和 方法。
- 在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集, 而是对父类的“扩展”。
Java只支持单继承和多层继承,不允许多重继承
一个子类只能有一个父类
一个父类可以派生出多个子类
关于继承的规则: 子类不能直接访问父类中私有的(private)的成员变量和方法。可以通过set/get进行操作。
特征三、多态
1.何为多态性:
对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)
2.多态的使用:虚拟方法调用
编译时,看左边;运行时,看右边。
3.多态的使用前提:
①有继承关系 ②有方法的重写
4.对象的多态性只适用于方法,不适用于属性(编译、运行都看左边)
子类可看做是特殊的父类,所以父类类型的引用可以指向子类的对象:向上转型(upcasting)。
/*
* instanceof关键字使用
* a instanceof A:检验a是否为类A的对象,返回值为boolean型。
*如果instanceof B,B是A的父类,也是true
* */