一、java面向对象
二、封装
通过该类提供的方法来实现对隐藏信息的操作和访问。
隐藏对象的信息
留出访问的接口
修改属性的可见性(private)→创建getter/setter方法(设为public用于属性的读写)→可以在getter/setter方法中对于数据的获取和赋值进行一些逻辑设定
(一)包
(二)static
static+属性
静态属性、类属性
static+方法
静态方法、类方法
static+类
不存在静态类
static+方法内局部变量
不存在方法中的静态局部变量
static+代码块
普通代码块:存在于方法内
构造代码块:存在于类中
静态代码块:static+构造代码块
(三)注意问题:
1、静态成员的生命周期
随着类的加载而产生,直到类的消亡才回收,生命周期长
2、静态方法中的成员调用
静态方法中只能直接调用同一个类中的静态成员,不能直接访问同一个类中的非静态成员
只能通过对象实例化后,对象.成员方法的方式访问非静态成员
3、各种代码块的执行顺序
无论你实例化多少个对象,静态代码块只会执行一次,构造代码块在每次对象构造的时候调用,方法中的普通代码块在每次调用方法时顺序调用
三、继承(上)
概念:
1、一种类与类之间的关系
2、使用已存在的类的定义为基础建立新类
3、新类的定义可以增加新的定义或者新的功能,也可以用父类的功能,但不能选择性的继承父类
4、满足“A is a B”的关系
特点:
1、利于代码服用
2、缩短开发周期
语法:
1、使用extends实现
2、单一继承,只能有一个父类
继承后的初始化顺序
父类静态成员→子类静态成员→父类对象构建→子类对象构建
(一)super
可以通过super关键字来访问父类的成员
1、访问父类成员方法(super.成员方法)
2、访问父类属性(super.属性)
3、访问父类构造方法(super())
1、子类的构造过程中必须调用其父类的构造方法,默认调用无参的构造方法
2、如果子类的构造方法中没有显式标注,父类中又没有无参的构造方法,则编译出错
3、使用super调用父类指定构造方法,必须在子类的构造方法的第一行
(二)this pk super
1、this:当前类对象的引用
访问当前类的成员方法
访问当前类的成员属性
访问当前类的构造方法
不能在静态方法中使用
2、super:父类对象的引用
访问父类的成员方法
访问父类的成员属性
访问父类的构造方法
不能在静态方法中使用
构造方法调用时super和this不能同时出现
(三)方法重写 pk 方法重载
1、方法重写:
在满足继承关系的子类中
方法名、参数(个数、顺序)、返回值与父类相同,兼容父类类型
访问修饰符的限定范围大于等于父类方法
2、方法重载:
在同一个类中
方法名相同
参数个数、顺序、类型不同
返回值类型、访问修饰符任意
(四)访问修饰符
四、继承(下)
(一)Object类
Object类时所有类的父类
Java中每个类都可以使用Object中定义的方法
(二)final
1、修饰类表示不允许被继承
2、修饰方法表示不允许被重写,但是可以被继承
3、修饰变量表示不允许被修改
4、修饰引用类型的变量,初始化之后不能指向另一个对象,但指向的对象的内容是可以改变的
5、配合static使用,表示静态的不允许被修改的信息,比如一些配置信息
五、多态