★1.面向对象的三个特征:
封装,将变化隔离,便于使用,提高重用性和安全性
继承
多态
2.static:修饰符,用来修饰变量或函数
★★static的特点:
1.随着类的存在还存在,随着类的消失而消失。
2. 优先于对象存在
3. 被所有对象所共享
4.别的类可以通过 类名. XX 的方式来调用
static注意事项
1.静态访问静态
2.不能有this super
3.主函数是静态
static 有利有弊
好处:对对象共享的数据单独存放,节省空间,可以被其它类调用
坏处:生命周期太长,不能访问非静态
★3.实例变量(成员变量)与类变量(静态变量)的区别
1. 在内存中存放的位置不同:实例变量存于堆内存中,而静态变量存于方法区
2.生命周期不同,类变量与类共存亡,就是类一加载类变量就存在,而实例变量随着对象的消失而消失
★★★4懒汉式与饿汉式的区别?
1. 懒汉式先创建空对象,到调用getobject方法时才在内存中开辟空间,延时加载,而饿汉式一旦加载类时,对象就存在。
2.懒汉式存在安全问题,在多线程 中的懒汉式可以会存在多个对象,如果加上锁,则会使运行速度变慢。
★5.覆盖的两个特点:
1.子类的权限要大于等于父类的权限才能覆盖
2.静态只能覆盖静态
★6.final
1.final修饰的方法不能被覆盖,
2.final 修饰的类不能被继承
3.final修饰的变量为常量。
4.内部类只能访问被final修饰的局部变量
★抽象类的特点:
1:抽象方法只能定义在抽象类中,抽象类和抽象方法必须由abstract关键字修饰(可以描述类和方法,不可以描述变量)。
2:抽象方法只定义方法声明,并不定义方法实现。
3:抽象类不可以被创建对象(实例化)。
4:只有通过子类继承抽象类并覆盖了抽象类中的所有抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。
5: 抽象类只能单继承。
★★7.多态表现
父类的引用指向了子类对象,父类的引用也可以接收子类对象
多态的好处:大大的提高了扩展性,弊端:只能使用父类的引用来访问父类成
多态的前题:存在继承和实现,通常还要存在覆盖
多态中函数的特点
非静态:编译看左边,运行看右边
静态:都看左边。
多态中变量:看左边
8.内部类,访问规则
1.内部类可以直接访问外部类成员,包括私有
2.外部类要访问内部类成员,必须先创建内部类对象
Outer.Inner in =new Outer().new Inner
内部类在局部时
1.不能让成员修饰符修饰
2.只能访问被final修饰的局部变量
调用时要先在内部类所在方法里创建对象
★★9.throw 与throws的区别
1.throw在方法内使用,throws在方法上使用
2.throws后面跟着多个异常类,用,隔开,throw后面跟的是异常对象
10.RuntimeException异常
如果函数内抛出此异常,函数上就不用声明
如果函数内抛出此异常,调用都不用处理
不可处理或不需处理时用RuntimeException