面向对象1
-
-
{} :定义在方法中,局部代码块|普通语句块;跟随方法使用
-
{}:定义在类中方法外,构造块;跟随new对象一起使用
-
static{}:类中方法外,静态块;类第一次加载的时候运行
注意:构造块在构造器要执行的代码之前执行,如果有多个,从上到下一次执行
static块只在类第一次加载完车之后执行一次,如果存在多个,从上到下一次执行
-
-
package和import
-
package:为了便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java 引入包(package)机制,提供类的多重类命名空间。
-
不需要导包的类:
-
java.lang包下的类
-
同包下的类
-
-
执行类的路径:
-
在使用类的时候指定全名(权限定名:包名+类名),只在当前只一次有效
-
使用import导包:import 包名+类名; 作用范围当前整个类中
-
如果导入多个同一包下的内容,可以使用模糊匹配,例如:import java.util.*,
优点:使用简单 缺点:降低编译效率,不会降低运行效率
-
静态导入 可以导入类中的静态内容(静态变量|静态方法),import static 包名+类名+静态内容名 ;
-
-
-
垃圾回收机制
-
判断是否为垃圾的算法:引用计数法;可达性分析法
-
垃圾回收算法:标记清除法
分代垃圾回收机制:年轻代:新生的对象;年老代:年轻代经历了n(15次以上)依然存在 的对象;持久代:一些静态的内容;Full GC:回收年老代和持久代的内容
-
-
super和this之间的区别
-
super关键字作用:
-
指代父类对象
-
通过super在子类构造器的首行调用父类构造器,必须在子类构造器的首航,特点如下:
-
super(参数)---调用父类带此参数的构造器
-
如果没有在子类首行通过super(参数)显示调用父类构造器,默认super()调用空构造,如果存在显示定义 ,不会默认调用空构造了
-
调用其他构造器时候,this和super不能同时显示存在,而this表示调用本类的构造器,this如果带参数则调用该类带参数的构造器
-
-
-
区分同名问题,子类和父类之间同名成员问题
-
默认就近原则
-
如果区分局部和成员,使用this. 成员 代表子类对象
-
如果区分子类和父类同名成员,使用super.成员 代表父类对象
-
如果不存在同名问题,this和super可以省略
-
-
-
继承,重写
-
继承:使用extends关键字
-
继承的优点:提高代码的复用性;子类继承父类的方法和属性;
-
缺点:不宜后期维护
-
继承的方法:子类 extends 父类;父类|超类:被继承的类,子类|派生类:继承其他的类
-
注意事项:子类继承父类,可以使用父类中的内容;一个父类可以有多个子类,但是一个子类只能有一个父类,因为单继承机制,可以多实现(接口)
-
-
重写:override
-
发生重写的条件:
-
发生继承
-
方法签名相同,返回值类型:基本数据类型->相同 引用数据类型:子类<=父类
-
权限修饰符:子类>=父类,在没有给定修饰符的情况下默认修饰符为default,defult<public
-
-
不会发生重写的条件:
-
private修饰的方法不能被重写(无法继承)
-
final修饰的方法不能被重写,final表示不可被更改的
-
static修饰的方法不能被重写;如果子类中存在与父类静态方法同名的方法,那么子类的方法要求也是static(静态)的
-
final:被final修饰的被不能被继承;被final修饰的方法不能被重写;
-
-
-
-
Object类
-
Object:java中所有的类都会直接或者间接 的继承自Object
-
toString()方法:当打印一个对象的引用时候,默认会调用 对象的toString()方法,所以打印的就是对象的 toString()方法的返回值;当打印对象的引用时,真实情况,并不想打印对象地址,使用时候没有意义,我们想要了解对象的基本信息,其实就是对象的成员属性值;可以通过子类中重写toString()方法来实现
-
toString()方法的使用:在没有被重写的情况下,如果直接打印一个类的对象,则默认调用toString方法并且返回堆地址;如果重写了,则返回的是重写后的内容
-

浙公网安备 33010602011771号