重载与重写的区别,重载的方法可以改变返回值类型吗?
重载:方法重载是让类以统一的方式处理不同类型数据的一种手段。方法重载是指在一个类中,多个方法的方法名相同,但“参数列表”不同。参数列表不同是指参数个数,参数类型或者参数顺序不同。
- 使用重载,必须具有不同的参数列表。
- 不能通过访问权限,返回类型,抛出异常进行重载。
重写:子类继承父类,子类需要对父类方法进行扩展,增加功能。这种操作方法称为重写。
1. 父类的参数列表必须与子类重写的方法的参数列表相同。
2. 返回值类型必须相同。
3. 子类重写的方法不能比父类拥有更严格的访问权限(如:父public,子private,报错)。
4. 重写方法一定不能抛出新的检查异常或者比被重写方法声明更加宽泛的检查异常(如:父 IOException ,子 Exception ,报错)。
抽象类与接口的区别?
相似性:
都不能被实例化,都可以包含抽象方法,实现接口或继承抽象类的普通子类必须实现这些抽象方法。
区别:
1、接口只能包含抽象方法,不能为普通方法提供方法实现,抽象类可以。
2、接口只能定义静态常量,不能定义普通成员变量,抽象类两者都可以。
3、接口不能包含构造器,抽象类可以包含。
4、一个类最多只能有一个抽象父类,但可以实现多个接口。
private 的作用范围?
除了 class 自己之外任何人都不可以直接使用。
string 与 stringBuffer 的区别?
string 为字符串常量,一旦创建之后该对象是不可更改的。stringBuffer 是字符串变量,对象可以改变。
string对象操作实际是一个不断创建新对象,并且将旧对象回收的过程,执行速度慢。stringBuffer 进行操作是直接对该对象进行更改。
string:适用于少量的字符串操作的情况。
stringBuffer:适用于多线程下在字符缓冲区进行大量操作的情况。
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1;s1 += 1;有什么错?
对于 short s1 = 1;s1 = s1 + 1;由于 s1 + 1 运算时会自动提升表达式的类型,所以结果是 int 行,在赋值给 short 类型 s1 时,编译器将报告需要强制转换类型的错误。
对于 short s1 = 1;s1 +=1;由于 += 是 java 语言规定的 运算符,java 编译器会对它进行特殊处理,因此可以正确编译。