封装:
封装的概念:
代码的整合,
封装的层次:
函数的封装: 把一组操作整合在一起
类的封装: 把属性和方法整合在一起
结构的封装:根据操作的性质(模型/控制操作/交互视图)进行结构设计封装
封装的操作:
1.将属性设为private 使属性私有制,只能在本类中被调用
2.提供getter和setter 使字段变成属性
3.基本数据类型的封装类型:
Java中要保证所有的成员都是完全面向对象的,所以java为基本数据类型也设计了一套对象类型(单词一致,首字母大写)
byte – Byte
short-Short
int-Integer
long-Long
float-Float
double-Double
char-Character
boolean-Boolean
实际项目开发中, javabean中的成员(属性)的类型要求用封装类型
赋值时,和基本类型无差别
封装类型和String之间的转换
封装的作用:
从源头控制字段的赋值(setter)
把字段变为只读(只有getter)
把字段的使用限制在类的内部(不加getter和setter,只加private)
拓展的封装思想:
把重要的数据限制在类的内部, 对外提供安全的访问和修改方式
private
只能在本类中被调用
所以对属性的调用或者赋值只能通过封装的get和set方法,或者构造方法
static:
概念:
1.是一个修饰符 , 用来修饰成员字段和成员方法(也可以修饰类)。
2.当静态方法中调用了类中的成员属性,就要求成员属性也必须声明为静态。
作用:
1.被静态修饰的内容只属于类本身,不属于任何对象
2. 产生的原因: 类中存在一类方法,它们和该类的对象并没有直接关系
操作:
在类的外部访问时:
类名.静态成员
在类的内部访问时:
有一类方法,随着调用它的对象的不同而产生不同的结果 – 实例方法
有一类方法,不会根据调用对象的不同产生变化,只需要类直接调用 – 静态方法
8种封装类:
byte – Byte
short-Short
int-Integer
long-Long
float-Float
double-Double
char-Character
boolean-Boolean
访问修饰符:
继承:
关键字 extends super
继承后的初始化顺序:
静态信息加载是按照类里面的顺序加载的,与访问修饰符无关
super()关键字:代表父类引用。
通过super调用父类指定的构造方法,必须在子类的构造方法的第一行使用super()
访问构造方法时:this和super 都是要抢占第一行的位置,所以一山不容二虎
重写:
关于instanceof的使用
if (userDao.login(user) instanceof VipUser ) {
//判断是否是vip用户就是判断返回的对象是不是Vipuser类型的实例(userDao.login(user))这个就是调用方法返回值
VipUser login=(VipUser)userDao.login(user);
//是的话可以强转为vipuser类型的对象,即可调用getvipId方法(vipuser对象才可以的)
多态
多态的使用思想
1.先构建父子的类型的体系
2.在使用类型的时候用父类作为高级(兼容性,拓展)
3.只要声明新的子类类型,它和原有操作就完全兼容
使用场景
当代码中的数据类型是高级类型的时候(返回类型/参数类型/声明对象类型),程序会按照实际的引用来执行子类自己的重写方法
多态:满足继承关系,父类引用指向子类对象
编译时多态,运行时多态
向上转型=隐式转型=自动转型-
父类引用指向子类实例。
可以调用子类重写父类的方法以及父类派生的方法,无法调用子类独有方法。
小类转型为大类
概念
多种形态
Java不允许声明重名的字段/方法(如何判断调用了谁?)
从设计的角度,java的设计思想是名字用一样的,提现不同的功能(区分?)
方法的多态
重载:
在一个类中,存在一组方法,它们的方法名一致,但参数各不相同(数量或类型),这一组方法就构成了重载,用单词overload表示
作用: 让一个同名的方法组通过参数就可以完成不同的调用
重载和返回值无关
重写
在继承过程中,如果子类声明了一个方法,和父类的方法声明完全一致,只有操作不同,父类和子类的方法就构成了重写
重写时,方法的声明部分(访问权限/返回类型/参数/方法名)都必须完全一致
用单词override表示,也被叫做覆盖
作用: 让子类和父类具有相同的行为,但,执行方式却不同,为对象的多态准备
@Override 重写的注解,作用是检查是否符合重写格式
对象的多态
上转型对象
声明为高级类型(父类),传递引用的时候赋值为低级类型(子类), 声明对象就是上转型对象
上转型对象在执行到有重写的方法时,会执行子类
上转型对象可以调用父类中声明的方法(继承)
上转型对象不可以调用子类独有的方法
下转型对象
声明为低级类型(子类),传递引用的时候赋值为高级类型(父类)
装箱和拆箱
调用方法的时候,需要用强转还原原本类型(必须和原类型一致)
向下转型=强制类型转换
子类引用指向父类对象,此处必须进行强转,可以调用子类独有的方法。
Cat temp=(Cat)two;//这里就是子类引用指向父类对象
Instanceof 运算符:判定向下转型