Java基础(0511)
构造函数
1.方法名与类名相同,且没有返回值
2.执行时机:创建对象时执行
3.默认创建无参构造函数,如果重载了,必须手动添加无参构造函数
构造代码块
1.位置:在类之中,方法之外
2.作用:用于抽取构造方法的共性代码块
3.执行时机:每次调用构造方法时会执行一次构造代码块
4.注意事项:构造代码块会先于构造函数加载
局部代码块
1.位置:在方法之中
2.作用:通常用于控制变量的作用范围,出了花括号就失效
3.执行时机:所处方法被调用
4.注意对象:作用范围越小越好,成员变量会存在线程问题
this代表本类对象的一个引用对象
Super代表的是父类的一个引用对象
this与super的区别
1.This代表本类对象的引用
class Father3{ this.XXX } //this – Father3 this = new Father3();
2.super代表父类对象的引用
class Father3{ super.XXX } //this – Father3 super = new Father3();
就相当于创建了一个父类对象
3.this可以在两个变量名相同时,用于区分成员变量和局部变量
4.this 可以在本类的构造方法之间调用,位置必须是第一条语句,注意,不能相互调用,会死循环
5.super是发生了继承关系以后,子类如果想用父类的功能,可以通过super调用
6.如果发生了重写,还想用父类的功能,需要使用super来调用
7.Super在调用父类构造方法时,必须出现在子类构造方法的第一条语句,而且如果父类中没有提供无参构造,子类可以通过super来调用父类其他的含参构造
重载Overload 与重写Override的区别
1.重载: 是指在一个类中的现象,是指一个类中有很多同名的方法,但是方法的参数列表不同
2.重写: 是指发生了继承关系以后(两个类),子类去修改父类原有的功能,子类中有一个方法签名(返回值类型 方法名(参数列表) )和父类的一模一样
3.重载的意义: 是为了方便外界对方法进行调用,什么样的参数程序都可以找到对应的方法来执行,体现的是程序的灵活性
4.重写的意义:是在不修改源码的前提下,进行功能的修改和拓展
(OCP原则:面向修改关闭,面向拓展开放)
5.重写要求方法的修饰符: 子类权限 >= 父类的权限
Static
- 只加载一次,就会一直存在,不再开辟新空间, 直到类消失才一起消失
- 随着类的加载而加载,优先于对象加载
- static不能和this或者super共用,因为有static时可能还没有对象
- 静态只能调用静态,非静态可以随意调用
静态代码块
静态资源随着类的加载而加载,并且只被加载一次,一般用于项目的初始化
特点: 被static修饰,位置在类里方法外
三种代码块的比较(静态代码块 局部代码块 构造代码块)
- 静态代码块:在类加载时就加载,并且只被加载一次,一般用于项目的初始化
- 构造代码块:在创建对象时会自动调用,每次创建对象都会被调用,提取构造共性
- 局部代码块:方法里的代码块,限制局部变量的范围
final
- 被final修饰的类,不能被继承
- 被final修饰的方法,不能被重写
- 被final修饰的变量是个常量,值不能被改变
- 常量的定义形式:final 数据类型 常量名 = 值
多态
- 多态的前提1:是继承
- 多态的前提2:要有方法的重写
- 父类引用指向子类对象,如:Animal a = new Cat();
- 多态中,编译看左边,运行看右边
多态的好处
- 多态可以让我们不用关心某个对象到底具体是什么类型,就可以使用该对象的某些方法
- 提高了程序的可扩展性和可维护性