一 : 方法
概念—类中定义的具有特定功能的代码块
- 方法—功能
作用—提高代码的复用性
格式—修饰符 返回值类型 方法名(参数列表){
方法体
return 返回值;
} - 注意: 1 定义方法 先确定需要的原始数据(通过形参来接受)+方法运行结果数据(通过返回值返回)
2 方法没有返回值的 用void标示
3 方法由俩部分组成: 方法声明部分(方法使用说明书)+方法体部分(方法功能的静态实现)
4 方法必须在主方法调用 才能执行
二 : 面向对象
- 一种编程思想: 写代码、设计软件的套路
找具有帮助我解决问题功能的对象 指挥对象解决问题
四部 :
a:创建类描述一类事物: 通过变量表示数据 通过方法表示功能
b:根据类创建对象:
格式:对象类型 引用名=new 构造方法;
c:给对象的属性赋值
格式:对象名.属性名=值;
d:调用对象的方法 解决问题
格式:对象名.方法名(实参);
class Person{
int age;
String name;
void show(){
system.out.println("哈哈哈");
}
public static void main (String[] s){
Person p=new Person();
p.age=11;
p.name="娃哈哈";
p.show();
}
}
三 : 类和对象
- 类: 代码的载体
对一类事物的描述
类是数据和功能的封装 - 对象: 多个基本数据有机组合形成的整体—复杂数据
通过类创建的实例
现实实物在电脑中的模型
四 : 成员
- 类的组成就是类的成员
- 类的成员: 成员变量+成员方法(普通方法+构造方法)
- 成员变量: 在类中定义的变量
- 局部变量: 方法中定义的变量
- 成员变量和局部变量的区别:
A:概念
B:相同之处:都是变量 来描述数据的
C:不同之处:
1 定义位置不同:成员变量-类 局部变量-方法
2 作用域不同: 成员变量-整个类
3 是否有默认值: 成员变量有默认值 取决于变量的类型 局部变量没有默认值
4 可用的修饰符不同: 局部变量只能用final 成员变量可加范围修饰符、static、final
五 : 方法重载 overload
概念: 同一个类中几个方法 方法名相同 参数列表不同的现象
- 要求: 1 同一个类
2 方法名必须相同
3 参数列表必须不同: (参数个数不同 参数类型不同 参数顺序相同) - 理解: 几个重载的方法 功能基本相同 只是需要的原始数据不同而已
六 : 构造方法
概念: 用于构建创造对象的方法
- 格式: 修饰符 类名(参数列表){方法体;}
- 特点: 1 构造方法名字必须是类名
2 一个没有定义构造方法 默认有一个无参数的构造方法
3 构造方法只能被关键字new调用 定义一次创建一个对象
4 构造方法不能被对象调用
5 构造方法没有返回值 不用void标示
6 构造方法的参数列表一般用于给属性赋值
七 : this
- 理解: 当前对象—用在类的方法体中 标示当前对象
- 使用场景1: 通过this.成员名 来表示成员
当前成员变量与局部变量重名,变量名默认指向的是局部变量 通过this.变量名来表示成员变量
- 使用场景2: 在构造方法中,通过this(参数列表)调用另外一个构造方法
八 : static
- 修饰符: 静态的
- 修饰: 成员变量 普通方法 内部类
- 类成员:被static修饰的成员
- 类变量:被static修饰的成员变量
- 类方法:被static修饰的普通方法
- 实例成员:没有被static修饰的的成员
- 实例变量:没有被static修饰的成元变量
- 实例方法:没有被static修饰的普通方法
- 类成员类加载时 在静态区域中加载
- 实例成员创建对象时 在对象内存中加载
- static修饰的变量:共享数据
1 不但可以被对象调用 还可以被类直接调用
2 一旦更改 所有对象的此属性值都更改 - static修饰的方法:
1 不但可以被对象调用 还可以直接被类直接调用
2 静态方法只能定义静态成员 不能调用实例成员
九 : 私有化
概念: 让属性对可信任的类、对象可见 对不可信任的类、对象隐藏
- 步骤: 1 定义属性是 添加范围修饰符private
eg:private int age;
2 提供公共的getter setter方法
eg:public int getAge(){return this.age;}
public void setAge(int age){this.age=age;}
3 不可信任的类和对象 提供getter setter方法间接调用属性
十 : 继承
概念: 定义新类时 如果新类拥有现有的类所有成员 可以让新类从现有的类 派生、衍生
- 新类: 子类
- 现有的类: 父类 根类 超类
- 格式: class 子类 extends 父类{}
- 特有: 1 子类会继承父类中定义的成员变量+普通方法
2 子类继承了父类的私有成员 但不能直接调用
3 子类不能继承父类的构造
4 子类可以定义父类中没有的成员—子类特有
5 子类可以重新定义父类已有的成员
子类重新定义父类已有的成员方法—重写 override
重写要求: 除了范围修饰符可以扩大 其他方法声明必须和父类
- 完全相同
子类重新定义父类已有的成员变量
要求: 变量名相同即可
6 java只支持类与类的单继承
7 如果一个类没有继承其他类 默认继承Object类
十一 : super
- 理解: 在子类方法中通过super来表示父类
- 使用场景1: 在子类方法中通过super.成员表示 父类的成员
当子类重新定义父类成员时 子类中父类的成员被隐藏 通过super.成员来调用父类被隐藏的成员
子类方法中所有父类成员前面默认有super. - 使用场景2: 所有子类构造方法通过super(参数列表)来调用父类的构造方法(把父类中定义的成员加载进子类对象内存中)
默认是super()调用父类无参的构造方法
注意:super(参数列表)必须是第一个语句
十二 : final
- 修饰符:修饰类、成员变量、局部变量、成员方法
最终的 - final修饰方法:不能被重写
- final修饰类: 不能被继承
- final修饰变量:–常量
1 没有默认初始值 必须显示赋值
2 不能二次赋值
命名规范:所有字母大写 单词之间用_连接
作用: 增加可读性+简化书写
十三 : abstract
- 修饰符:修饰类、方法
- 抽象:信息不完整 笼统模糊
- 特点: 1 抽象方法不能有方法体
2 有抽象方法的类必须是抽象类 抽象类可以没有抽象方法
3 抽象类不能创建对象 只能定义引用
4 抽象类的子类除非重写所有的抽象方法 否则还是抽象类
5 抽象类存在的意义 为子类定义规范 让子类继承
抽象方法存在的意义 为子类方法定义方法声明 让子类根据自己的需求实现方法体
6 抽象类有构造方法: 不是用于创建本类对象 而是用于创建子类对象时 把抽象类定义的非抽象方法和 成员变量加载进子类对象内存中
十四 : 重载和重写的区别 overload和override的区别
- 重载:一个类中几个方法 方法名相同 参数列表不同的现象
- 重写: 子类根据自己的需求 重新定义父类已有的成员方法
- 相同之处:对应的都是方法
都要求方法名相同 - 不同之处:
1 位置不同:重载:在同一个类中
重写:在子类中 必须有继承关系
2 要求不同:重载:方法名相同 参数列表不同
重写:除范围修饰符可以扩大 其他方法声明必须和父类方法完全一样
3 影响不同: 重载的方法之间没有影响 只是调用时不能通过方法名区分 只能通过参数列表区分
重写:子类重写父类的方法 子类中父类的方法会被隐藏
4意义不同: 重载:几个方法功能基本一致 只是需要的原始数据不同而已
重写:子类对父类已有的方法进行改进 让其符合子类的需求
十八 : 范围修饰符
关键字 范围
public 公共的 整个项目
protected 受保护的 本包以及其他包的子类
()省略的 本包
private 私有的 本类