54、 OOP(面向对象)语言的三大特征是?
封装性,继承性,多态性
55、 分别表述类的三大特性及其他们的功能
封装:隐藏类的实现细节、迫使用户去使用一个接口去访问数据、使代码更好维护
继承:子类可以直接继承使用父类的方法,程序员只需要做的是定义额外特征或规定将适用的变化
多态性:同一个行为具有多个不同表现形式或形态的能力
56、 如何实现继承?继承的规则?
public class A extends B{
}
(1) 单继承性
(2) 构造方法不能继承
(3) super引用父类,调用父类的属性,方法
(4) 当子类中出现与父类的方法名,返回类型,参数列表相同的方法时要覆盖此方法
57、 简述this和super的功能和用法
this :
(1) 能访问除构造方法以外所有的属性、方法,通过this. 来调用方法和属性
(2) 不可以在静态方法中使用,
(3) 在调用其它构造方法时,必须放在该构造方法的第一行
(4) 在构造方法中使用this(参数列表),相当于调用本类的其它构造方法,它必须作为构造方法的第一句
super :访问父类
(1) super. 点取父类中被子类隐藏的方法和属性,
(2) 通过 super(参数列表) 来调用父类的属性和方法,在调用父类的构造方法时必须放在子类构造方法里的第一行;
58、 如何确定在多态的调用中,究竟是调用的那个方法?
new的是哪一个类就是调用的哪个类的方法。
59、 请描述方法定义的完整的语法结构
权限修饰符 修饰符 返回类型 方法名(参数) 例外{
方法体;
}
60、 什么是重载?
在一个类中出现方法名相同,但参数列表不同时,这种情况就是重载。
61、 简述重载的规则
(1) 方法名称必须相同;
(2) 参数列表必须不同(个数不同,或类型不同,或参数排列顺序不同);
(3) 与返回类型无关;
62、 什么是方法的覆盖?什么情况下出现?
方法覆盖:
子类可以修改从父类继承过来的行为,也就是说子类可以创建一个与父类方法有不同功能的方法,但具有相同的:名称、返回类型名和参数列表。
在父子类的情况下出现时。
63、 方法覆盖的规则?
(1) 方法名要和父类中被覆盖的方法名相同,返回类型相同,参数列表相同。
(2) 访问权限要大于等于被覆盖方法的权限。
(3) 例外列表要小于等于被覆盖方法的例外列表。
64、 static修饰符的功能是?可以用在什么地方?怎么访问?
static 修饰符功能:
(1) 共用一块内存区域,也就是用static修饰的变量或成员方法对所有类的实例都是相同的
(2) 静态成员方法和静态变量的优点在于他们能在没有创建类的任何一个实例的情况下被引用。
(3) 可以用在方法或属性上
访问方式:
(1) 直接使用类名调用
(2) new 一个实例,用实例调用
65、 static的基本规则
(1) 类中的静态方法只可以调用静态的属性和方法,不允许调用非静态的属性和方法。
(2) 静态变量为类变量,可以用类名直接调用静态的属性和方法。
(3) 静态方法中不允许出现this和super
(4) 构造方法不允许声明static
(5) 非静态变量为实例变量,通过实例调用
(6) 静态方法不能被非静态方法覆盖
66、 final修饰符的功能是?可以用在什么地方?
功能:final标记所有通用的功能,不能随意更改
可以用在类、属性和方法上
67、 final的基本规则
(1) final修饰的类不能被继承
(2) final修饰的成员变量只允许赋值一次,且只能通过构造方法里赋值。
(3) final修饰的局部变量即为常量,只能赋值一次。
(4) final修饰的方法不允许被子类覆盖。
68、 什么是抽象方法,什么是抽象类
用abstract修饰的方法,只有方法的声明,而没有方法的实现,就叫抽象方法。
用abstract修饰的类,就叫抽象类。
69、 抽象类的规则
(1) 抽象类内部可以没有抽象方法
(2) 必须用abstract修饰
(3) 不能够直接使用抽象类,必须通过子类继承并且实现
(4) 抽象方法不允许被private修饰
70、 什么情况下使用抽象类
(1) 当一个类的一个或多个方法是抽象方法时;
(2) 当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法体时;
(3) 当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法体时;
71、 equals方法和”= =”的功能和区别
功能:判断对象是否相等
区别:
equals方法比较的是对象的值
= =:比较的是对象值的内存地址,对基本数据类型来说= =比较的是数值
72、 toString方法的功能和基本写法
返回一个String类型
public String toString(){
return “”;
}
73、 String的方法的功能和基本使用方法,请描述5个以上
substring(参数1,参数2); 功能:取字符串中参数1到参数2的的所有字符; "String".subString(0,1);
replace(参数1,参数2); 功能:用参数1中的值替换字符串中所有参数2的值 "String".replace(ing,tt);
equals( ); 功能:判断两个字符串是否相等 "String".equals("tt");
trim( ); 功能:去掉字符串两边的空格 "String".trim();
indexof( ); 功能:查找字符串中参数所在位置,并返回字符串第一个出该参数的下标
"String".indexOf("ing");
split( ); 功能:根据参数分割该字符串 "String".split("-");
74、 为什么使用StringBuffer类?有什么功能和优点?
–只创建一个对象
–StringBuffer 对象的内容是可以被修改的
–除了字符的长度之外,还有容量的概念
–通过动态改变容量的大小,加速字符管理
75、 举例说明如何使用StringBuffer
StringBuffer sb = new StringBuffer();
sb.append("aaa");
78、 什么是接口?接口的定义规则?
接口是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
public interface Tt {
public void outPut( );
public int tt( );
}
79、 接口的作用?为什么使用接口?
多重继承
封装、隔离
功能,实现的分离
多态
便于后期维护
接口是可插入性的保证。
80、 什么是多重接口
就是一个类实现多个接口
81、 描述接口的基本思想?
封装 隔离
接口及相关机制的最基本作用在于:通过接口可以实现不相关类的相同行为,
而不需考虑这些类之间的层次关系。
根据接口可以了解对象的交互界面,而不需了解对象所属的类。
面向对象程序设计讲究“提高内聚,降低耦合”。
如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。
82、 如何在代码中使用接口?
public class MyCast implements Tt{
public void outPut( ){}
public int tt( ){
return 0;
}
}
83、 举例说明如何把接口当作类型使用
public interface Animal(){
public void tt( );
}
public class Dog implements Animal{
public void tt ( ){}
}
Animal ani = new Dog();
84、 如何选择接口和抽象类?为什么?
优先选用接口,尽量少用抽象类
在下列情况下选择抽象类:需要定义子类的行为,又要为子类提供共性的功能。
85、 什么是异常,异常的分类?
程序中导致程序中断的一些情况叫做异常,一般程序员可以处理。
异常分为运行时异常和非运行时异常(一般异常)
运行时异常是指因设计或实现方式不当导致的问题。也可以说,是程序员的原因导致的,本来可以避免发生的情况。例如:BufferOverflowException, ClassCastException,IndexOutOfBoundsException,ArithmeticException。出现这些异常的代码不需要try块包围。
非运行时异常是指除运行时异常以外所有的异常,出现这些异常的代码必须用try块包围。例如:FileNotFoundException,EOFException,