1.重写 重载
重载 :表示在一个类中可以有多个方法名相同的方法,这些方法的参数列表不同(参数个数或者参数类型不同)
重载必须有不同的参数列表,可以有不同的返回值类型,可以有不同的修饰符,可以抛出不同的异常
重载体现的是一个类中的多态性 在编译是起作用 静态多态性
重写 : 重写的前提是得有继承关系,表示子类中某个方法名和返回值类型同父类完全相同。
参数列表与返回值类型必须与被重写的方法完全相同
重写中子类的访问修饰权限不能小于父类,重写方法一定不能抛出新的异常或者更为广泛的异常
重写体现的是子类和父类的之间的多态,在运行中起作用
重写是子类重写父类的方法,重写的方法名和返回值类型必须相同,而类的构造必须同类名相同,所以构造方法是不能重写的。 重载是发生在同一个类中,所以构造方法是可以重载的。
2.finally和final的区别
1)简单区别
final 是用以声明属性,方法,类,被final修饰的属性不可变,方法不可重写,类不可以继承
finally是异常处理结构体中的关键字,异常中表示总是执行不能单独使用,用来释放资源。
finalize是Object类中的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他 资源回收,例如关闭文件等。
2)详细区别
final用在四个地方:定义变量 ( 静态 非静态 )、定义方法的参数、 定义方法 、 定义类
对于一个final变量,如果是基本数据类型变量,其数值在初始化之后就不可以改变了,如果是引用型数据类 型的变量,在对其初始化之后便不能在指向另一个对象。简单来说,就是被final修饰的变量的引用不可变, 引用指向的对象是可变的。
3.static
1)static表示静态。被static修饰的变量属于类变量可以通过类名.变量直接使用。被static所修饰的方法属于类方法,可以通过类名.方法名直接引用。
2)被static 修饰的变量,方法统一属于类的静态资源,是类实例之间共享的。一处变,处处变。
3)jdk把不同的类资源进行了分类放置,而不是放在了一个类中;这样做的好处:
a.不同的有不同的静态资源,这样可以静态资源分类 ,比如把数学相关的静态资源放在java.lang.Math中 等,这样就很清晰;
b.避免重名,
c.避免静态资源类无限膨胀
4)静态资源可以引用静态资源;非静态资源可以引用静态资源;静态资源不可以引用非静态资源。
解释:静态资源属于类,但是是独立于类存在。从jvm的类加载机制来看,静态资源是类初始化时候加载 的,而非静态支援是类new的时候才加载出来的。类的初始化要早于new,所以对静态资源来说,它是跟 着类 一起加载的这时候非静态资源还没有new出来,所以不知道有什么非静态资源;而非静态资源是是 new了 之后才产生的,所以有什么静态资源都知道。
5)静态块:静态块里的代码只执行一次,并且只是在初始化类的时候进行执行。
a.静态资源的加载是严格按照静态资源的定义顺序来加载的
b.静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。
c.静态代码块是严格按照父类静态代码块->子类静态代码块的顺序加载的,且只加载一次。
4.如何自定义一个异常
1)原因:区分异常
2)格式: class 名字 extends Exception{
空参构造;
有参构造
}
5.接口和抽象类的区别
1)接口可以多继承,抽象类不可以多继承;一个类可以实现多个接口,但是一个类只能继承一个抽象类
2)抽象类中可以有普通成员变量,接口中不能有普通成员变量,只能有常量;
3)抽象类中可以有非抽象方法,接口中所有的方法都必须是抽象的;
4)抽象类和接口都不可以实例化,抽象类可以通过子类间接实现实例化;
5)抽象类中的成员可以是多种类型的,接口中成员变量必须用public static final修饰
6)抽象类中允许有静态代码和静态方法,接口不能;
7)抽象类的子类必须实现抽象类声明的所有方法,否则子类也必须声明为抽象类;类如果要实现一个接口,就必须实现这个接口声明的所有方法。
6.基本数据类型占几个字节 (一个字节 = 8位)
byte占1个字节 short占两个字节 int占四个字节 long占八个字节
char占两个字节 float占4个字节 double占8个字节 Boolean没有明确规定
7.什么是多态
1)定义:多态是同一个行为可以有多个不同表现形式或形态的能力。
2)三要素:继承关系;子类重写父类方法;父类引用指向子类对象
3)多态的好处:
提高了代码的维护性;提高了代码的可扩展性
4)多态的实现方式:
接口实现,继承父类进行重写;
同一个类中的重载
5)转型:
a.向上转型:1.子类引用的对象转换为父类类型称为向上转型。此处的父类可以是接口。
2.向上转型时,子类独有的方法会丢失,比如猫继承动物,猫中独有的抓老鼠方法,无法引用
3.子类引用不能指向父类
b.向下转型:1.把父类对象转为子类对象
2.向下转型的前提是父类对象指向子类
3.向下转型只能转本类对象
8.常见的流
a.按流方向:输入流和输出流
b.按输入数据大小:字节流和字符流
c.按处理方式来分:处理流和节点流
字符流可以转为字节流:inputstreamreader (也可以用来指定字符编码)
9.序列化
网友评论