1、数组有没有length()这个方法?String有没有length()这个方法?
数组中没有 length() 方法
数组中只有length属性,表示数组的长度,而且这个属性可以理解为一个常量,
一旦数组产生,我们就可以得到length的值,这个值不能改变;
String中有length() 方法
返回的是字符串的长度,也不能修改。
2、抽象类和接口有什么区别?
相同点: ① 代表属性的抽象层
②都不能被实例化
③都能包含抽象方法
不同点: ①在抽象类中可以为部分方法提供默认现实,而接口中只能包含抽象方法;
抽象类便于复用,接口便于代码的维护;
②一个类只能继承一个直接的父类,但可以实现多个接口;
3、重写和重载的区别?
重载:方法名相同,参数列表不同(个数、顺序、数据类型)
在同一个类中,和访问修饰符、返回值类型无关
作用:调用方法,赋值更加的便捷;
重写:以前的方法不能满足我么现在的需求了,需要重新编写,
方法名与参数列表相同,
返回值类型相同或是其子类,
访问修饰符不能严与父类,
抛出的异常不能大于父类;
(需要重写的时候,子类的方法和父类的方法一摸一样即可)
4、请你写出你理解的Java面向对象的三大特性:
(1)封装:
什么是封装?
将类的信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法对隐藏的信息进行操作和访问;
封装的好处:①只能通过规定的方式访问数据,
②隐藏类的实例细节,方便修改和实现;
封装的步骤:①将属性私有化 private
②创建setter方法,针对用户输入的值进行判断,
③编写getter方法来获取值;
(2)继承
继承的目的:在多个种类中有多个重复的方法,显得代码冗余,
通过使用继承来避免;
条件:满足 is - a 的关系 只能是单根继承
继承的语法:通过 extends 关键字来实现类与类的继承,
class 子类类名 extends 父类类名(){}
被继承的这个类被称为父类,基类或者超类,
继承的这个类被称为子类或者派生类;
继承的优缺点: ①优点:简化了代码
提高了扩展性
提高了可维护性
②缺点:造成了耦合性过高,牵一发而动全身;
不能被继承的:①父类的构造方法
②private修饰的内容
③不用包下默认的修饰符的内容
Super:可以调用父类中的属性,方法,构造方法,
如果在构造方法中使用,必须在第一行;
执行顺序:父类属性--父类构造方法--子类属性--子类构造方法
(3)多态
什么是多态:
同一种操作,由于条件不同,产生的结果也不同,
同一种引用,使用不同的实例而执行不同的操作;
使用:父类名 父类引用 =new 子类类名();
父类的引用指向子类的实例;
如果子类和父类中都有同样的方法,我们在使用多态的方法调用的是子类的方法
好处:①提高代码的复用性
②解耦合
5、写出异常的语法(throw和try):
try: 执行可能产生的代码
try{
//代码段
}catch(异常类型ex){
//对异常进行处理的代码段
}finally{
//除遇到exit()肯定执行的代码段
}
throw new Exception
抛出异常,直接在程序中写异常信息
例 public void setSex(String sex) {
/**
* 如果赋值的是男或者女则正常赋值否则给出异常提示
*/
if("男".equals(sex) || "女".equals(sex)){
this.sex = sex;
}else{
//抛出异常
try {
throw new Exception("性别赋值不正确");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}