方法的重写Override
1.发生在父子类中,方法名相同,参数列表相同
2.重写的方法被调用时,看对象的类型
重写要遵循两同、两小、一大原则(一般都是一模一样的)
1.两同:方法名相同,参数列表相同
2.两小:
1.子类的返回值类型小于或等于父类的
1.1void和基本类型是必须相同
1.2引用类型时,小于或等于
2.子类抛出的异常小于或等于父类的–异常
3.一大:
子类方法的访问权限大于或等于父类的—访问修饰符
重写与重载的区别
1.重写:父子类中,方法名相同,参数列表相同,方法体不同,遵循运行期绑定,根据对象的类型调用方法
2.重载:一个类中,方法名相同,参数列表不同,方法体不同,遵循编译期绑定,根据引用的类型调用方法
一句话:重写看对象,重载看引用
package和import
package:
1.作用:避免类名冲突
2.包名可以有层次结构
3.建议:包名所有字母都小写
4.类名的完全限定名:包名.类名
import
1.作用:声明类,引入类
2.同包中的类可以直接访问
不同包中的类调用:
1.先import声明类再调用访问类(建议)
2.类的全称–太繁琐(不建议)
封装的意义
1.对外提供可调用的,稳定的功能
2.封装容易变化的,具体的实现的细节,外界不可访问
意义在于:降低代码出错的可能性,增强维护性
访问控制修饰符
1.public:公开的、任何类
2.private:私有的、本类
3.protected:受保护的、本类、子类、同包类
4.默认的:什么也不写,同包类
类的访问修饰:public和默认的
类成员的访问修饰:以上四种均可
static
static:静态的
## 1.静态变量
1.由static来修饰
2.属于类,存在方法区中,只有一份
3.常常通过类名.来访问
4.何时用:所有对象的数据都一样时使用
成员变量:
1实例变量:对象.来访问
2静态变量:类名.来访问
2.静态方法
1.由static修饰
2.属于类,存在方法区中,只有一份
3.常常通过类名.来访问
4.没有隐式this传递,没有this就没有对象,就不能访问实例变量,实例变量必须通过对象.来访问,所以静态方法中不能直接访问实例成员,静态方法里只能访问静态变量
实例变量比静态变量用得多,实例方法比静态方法用得多
5.何时用:方法的操作只与参数相关而与对象无关
## 静态块
静态块:给静态变量赋值
1.由static修饰
2.属于类,类被加载期间自动执行,类只能被加载一次,所以静态块也只执行一次
3.何时用:常常用于加载静态资源(图片、音频等)
final
final:不能变
1.修饰变量:变量不能被改变
2.修饰方法:方法不能被重写
3.修饰类:类不能被继承,不能被继承,但是可以继承别的类,使一个类不被继承的意义在于:可以保护类不被继承修改,可以控制滥用继承对系统造成的危害
final修饰成员变量两种方式初始化:1.声明的同时初始化2.构造方法中初始化
final修饰局部变量,只需在使用之前初始化即可
static final常量
1.必须在声明的同时初始化
2.不能改变,通过类名点来访问
3.建议:常量名所有的字母都大写
4.编译时会自动替换为具体的值,效率高