编程思想:
面向过程:不便于复用,不利于后期维护
面向对象:可重用性、可维护性和可扩展性强
面向对象三大特征:
封装,继承,多态
对象?(万物皆对象)
特征(属性):
操作(方法):完成功能的,一个方法只干一件事
对象:用来描述客观事物的一个实体,由一组属性和方法构成
类?(类是抽象的)
类是对象的模板
类:具有相同属性和方法的一组对象的集合
类是对象的抽象,对象是类的具体
代码规范:
类名:使用大骆驼命名法
属性名:使用小骆驼命名法或 _ 隔开两个单词全小写
方法名:使用小骆驼命名法
//通过类 创建对象
//类名 对象名 = new 类名()
Student stu1 = new Student();//引用数据类型
//调用对象下的属性
//对象名.属性名
stu1.name = "李振海";
stu1.age = 5;
//调用对象下的行为(函数,方法)
//对象名.方法名()
stu1.show();
方法语法:
访问修饰符 返回值类型 方法名([参数]){
方法体
[return 返回值]
}
public void studentPrint(){
方法体
}
调用方法:
同一个类下: 方法名()
不同类下: 对象名.方法名()
public:公共的(在当前项目任何地方都可以调用)
void:没有放回值
关键字:
this:当前对象
参数传递:(形参个数与实参个数及位置相同)
形参:方法定义时的参数
实参:方法调用时传递的参数
构造方法作用:初始化对象属性信息
语法:
访问修饰符 构造方法名([参数]){
方法体
}
注意:方法名必须和类名相同
使用自定义构造方法时,无参构造方法将被覆盖
this 调用当前对象下的属性和方法
方法重载:
1.方法名相同
2.参数个数或类型不同
3.与返回值、访问修饰符无关
4.必须在同一类下
包:(文件夹)
package 声明当前文件位置
import 导入包(需要到类,可以使用*代表所有的类)
包的命名规范:
企业项目.企业名称.项目名.模块名称
com||cn||net.hz.ch02. dao||vo||pojo||test01||test02
封装:隐藏类的内部实现细节,对外提供一个可访问的接口(方法)
属性封装:
1.设置属性访问修饰符为private(私有的)
修饰符
final : 常量
static: 静态
变量===》静态变量
方法===》静态方法 (调用成员变量时成员变量必须要使用static修饰)
代码块==》静态代码块 (程序运行期间只执行一次)
static {
}
继承:子类继承父类(使用extends关键字)
子类继承父类后,子类便拥有父类的属性和方法
注意:java单根继承(只有一个直接父类)
子类调用父类的构造方法: 使用super()
注意:super()必须在第一行
子类调用父类方法和属性: 使用super.属性||super.方法()
子类重写父类的方法(覆盖)
方法重载:
1.必须在同一类下
2.方法名相同
3.参数个数或类型不同
4.与返回值、访问修饰符无关
方法重写(覆盖)
1.在子类和父类之间
2.方法名相同
3.参数相同
4.返回值类型必须相同 或 是其子类(子类的返回值,是父类返回值的子类)
5.访问修饰符不能严于父类
注意:
子类的非静态方法不能覆盖父类的静态方法,
子类的静态方法不能覆盖父类的非静态方法
子类静态方法中无法使用super关键字
高内聚,低耦合
多聚合,少继承
@Override(注解) 代表此方法是重写方法 可以不加
Object :超类||基类||父类
java中所有的类都之间或间接继承Object
引用数据类型(对象比较):
== :比较内存地址
多态:事物的多种形态(同一种事物,由于条件不同,产生的结果不同)
* 类型转换
父类转子类 大转小 向下转型 (强制类型转换)
子类转父类 小转大 向上转型 (隐式类型转换)
:只能调到共有的方法,子类特有的方法调用不到
abstract抽象(修饰符)
abstract抽象类:
1.不能实例化
2.可以没有抽象方法
abstract抽象方法:
1.没有方法体
2.必须被实现
3.必须在抽象类中
接口特点:
接口不可以被实例化
实现类必须实现接口的所有方法
实现类可以实现多个接口
implements、多个接口使用逗号隔开
接口中的变量都是静态常量(public static fin)