================ 面向对象的核心基础 ====================
注意:
标识符
1、定义必须有意义
2、以字母,下划线,$符号开头,其他内容不能包含特征符号
3、类名首字母必须大写,方法名和属性名首字母必须小写,使用驼峰命名方式
4、常量所有字符都必须大写,如果多个单词之间使用下划线分割
一、什么是对象
现实:具有明确定义的行为和特征的一类事物
程序: 堆内存中分配内容空间
具体类的实例。
二、什么类
类: 具体相同行为和特征的抽象
类是对象的模板
类的定义:
public 所有对象都可以访问
protected 同一个包或者子类的对象可以访问
default(省略) 同一个包的对象可以访问
private 只能本类才能访问
final 不能被其他类继承(派生)
abstract abstract关键字修饰的类是抽象类
---------------------------------------
抽象类和类区别:
不同点:
1>不能被实例化。
2>可以定义抽象的声明、抽象方法。
相同点:
1> 都有构造函数
2> 都可以定义实现的方法
----------------------------------------
static 静态类[一般定义内部类]
<访问修饰符> class 类名 {
// 构造函数/构造器
// (★)一个类都有一个默认无参的构造函数
// (★)一旦显示定义构造函数,都会把类中默认的构造函数覆盖掉
// 作用: 初始化类中成员变量/成员属性
调用对应构造函数实例对象
// 定义:构造函数的名称和类名相同
构造函数重载:构造函数中参数个数和类型不同可以构成构造函数的重载
// 属性 - > 特征
static 属性属于类本身
在内存中是唯一存在
调用方式 类名.属性名
<访问修饰符> 属性类型(基本/引用) 属性名称;
// 封装
// 1、使用private修饰类中属性
// 2、提供属性对应访问器(getter,setter)
对象的属性赋值或者获取操作进行控制
// 方法 - > 行为
方法修饰符:
static 使用static关键字修饰的方法,属性属于类本身,而不属于类的实例,调用:
类名.静态方法名称(....);
final 使用final关键字修饰的方法,不能被子类重写/覆写
abstract 使用abstract修饰方法,必须定义在抽象类或者接口中,并且没有具体实现
参数列表:
参数数据类型
值类型: 值传递,不能改变本身值
引用类型 引用传递,可以改变对象中成员属性的值
参数类型:
实参: 在调用方法的时候出现,它是一个赋值的变量或者常量
形参: 定义方法是定义参数名称,没有实际值
<访问修饰符> <方法修饰符> 返回值类型(void/基本数据/引用) 方法名称(参数列表)
{
// 方法体
// 方法实现逻辑
// 注意:
// 如果返回值不为void,那么返回结果格式:
// return 返回值类必须是返回类型兼容的数据类型
}
// 在同一个类中存在方法重载
// 重载:在同一类中方法名称相同方法参数类型和个数不同构成方法重载,与返回值类
型无关
}
三、类实例化
1> 通过类定义的构造函数
类名 对象名 = new 类名();
// 通过属性对应访问器操作属性
对象名.setXxxx(值) // 给属性设置值
对象名.getXxxx() // 获取对应属性的值
// 调用类中实例方法,不是静态方法(类方法)
对象名.方法名();
四、面向对象的特征
★封装:隐藏对象中具体方法实现细节
表现:属性私有化
提供对应属性访问器
提供外部访问方法,让其他方法私有化
★继承:子类继承父类中非私有的成员属性和方法
1>Java中只能是单继承,可以有多重继承 ->(间接继承)
2>实现子类的时候,先调用父类对应的构造函数初始父类,在初始化子类中成员变量
3>子类可以重写继承父类中的方法,方法访问修饰符>=父类访问修饰符
4>当前子类中定义与父类重名属性时,子类不能继承父类中相同名称属性
super: 代表父类引用
1> 在子类中使用父类构造初始化父类中成员变量的时候,必须放在子类构造函数的
第一行
2> super(参数列表) 调用父类中对应参数构造函数初始化子类对象
3> 可以同super.方法(....) 调用被子类重写的方法
this: 当前调用对象的引用[谁调用指向谁]
1> this(....) 调用自己对应参数列表的构造函数初始化参数更多的构造函数
2> 本来调用自己构造函数初始化,this() 必须紧跟在super()后面
public A(int a, float b) {
super();
this(a); // 调用其它构造函数初始化成员属性
this.b = b;
}
public A(int a) {
this.a = a;
}
★多态:一个对象的行为多种表现形态
表现形式:
重写
重载
★抽象:在类定义的时候使用abstract关键字修饰类
★接口:限制实现类中必须拥有方法
在接口定义变量都是公共的静态的常量
接口中定义方法声明默认都是public abstract
特点:
没有构造函数
没有具体方法
只能被类实现<特例: 抽象类实现接口的时候可以不实现接口抽象的声明>
接口可以继承接口,不能实现接口