什么是抽象类
什么是抽象方法
abstract 在修饰抽象类和抽象方法时放置的位置
抽象类的特点,和普通类有什么区别
抽象类可以定义和普通类一样的成员变量和成员方法吗
抽象类中一定得有抽象方法吗
抽象类能实例化吗
当一个普通类继承了抽象类之后,这个普通类需要重写父类抽象类的抽象方法
抽象类当中可以有构造方法吗,作用是什么
抽象方法与抽象类的存在关系
抽象类可以发生动态绑定,向上转型,多态等特性吗
如果一个抽象类A·继承了抽象类B, 那么在抽象类A中可以不重写抽象类B 中的方法,但是当一个普通类C 继承了这个抽象类A,此时在普通类 C 中不仅要重写抽象类 B 中的方法还要重写抽象类Az的方法
抽象方法可以被 private / static / final 修饰吗
抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰
抽象类存在的意义
=========================================================================
在 Java 中接口是什么
接口怎么创建
接口怎么命名
接口被什么修饰
接口可以被什么访问修饰符修饰
在接口中成员变量的默认类型是什么
接口中的成员变量必须就地初始化
在接口中成员方法的默认类型是什么
接口当中的方法不能有具体的实现,但是这个方法被 static 或者 default 修饰之后可以有具体的实现
JDK9-17之间接口又有了新特性,具体是什么特性
接口能被实例化吗
类和接口之间的关系是什么
一个类怎么实现一个或者多个接口
当一个普通类实现该接口之后,要做什么·
当一个抽象类实现该接口,要重写方法吗
接口可以发生向上转型、动态绑定、多态吗
接口中向下转型的使用
电脑,usb接口,鼠标,键盘的代码实现
接口属于哪种数据类型
接口中的方法怎么才能实现
因为接口当中的方法默认时 public abstract修饰的,所以子类当中重写的时候权限只能时 public
接口当中能有静态代码块和构造方法吗,为什么
抽象类和接口类的区别是什么
实现多个接口的需求是什么
什么时候用接口,什么时候用抽象类
一个类可以既继承一个父类又实现多个接口,语法怎么实现的
实现多个接口的语法实现
接口使用:把单独的功能放到接口当中,通过 Java 当中类可以实现多个接口
接口可以继承另外一个接口
接口与接口时继承关系
类和接口之间是实现关系
一个接口可以通过 extends 关键字扩展多个接口的功能
接口之间的继承相当于把多个接口合并在一起
怎么看一个类当中所有的方法
Object 类可以接收所有类的对象
当比较对象中内容是否相同时,怎么重写 equals
怎么快速重写 equals
hashcode 的作用
怎么重写 hashcode
怎么快速重写 equals and hashcode
Comparable 接口与 Comparator 接口
两个引用可以通过关系运算符来比较吗
怎么比较两个对象元素的大小(2种接口实现)
怎么利用 Comparable < >接口 来比较两个学生对象年龄的大小
public class Student implements Comparable<Student> 这种写法能轻易改变他的比较规则吗
怎么重写 compareTo
@Override
public int compareTo(Student o) {
// if(this.age > o.age) {
// return 1;
// }else if(this.age == o.age) {
// return 0;
// }else {
// return -1;
// }
return this.age - o.age;
}
怎么使用 compareTo
if(student1.compareTo(student2) > 0) {
System.out.println("student1 > student2");
}
怎么利用 Comparator 接口来比较两个学生对象名字的大小
怎么利用 Comparator 接口实现比较
怎么重写 compare 方法
public int compare(Student o1, Student o2) {
return o1.name.compareTo(o2.name);
}
怎么使用 compare 方法
NameComparator nameComparator = new NameComparator();
int ret = nameComparator.compare(student1,student2);
if(ret > 0) {
System.out.println("student1 > student2");
}else {
System.out.println("student1 <= student2 ");
}
public class AgeComparator implements Comparator<Student> 与public class Student implements Comparable<Student>区别
以后自定义的类型,建议实现比较接口,比如下述情况(依据不同的规则制定比较器排序),需要实现比较接口
Student student1 = new Student(name:"bit",age:10);
Student student2 = new Student(name:"hello",age:5);
Student student3 = new Student(name:"gbk",age:12);
Student[] students = new Student[3];
student[1] = student1;
student[2] = student2;
student[3] = student3;
Arrays.sort(students);
根据年龄排序
//此在 Test 包下
Student student1 = new Student(name:"bit",age:10);
Student student2 = new Student(name:"hello",age:5);
Student student3 = new Student(name:"gbk",age:12);
Student[] students = new Student[3];
student[1] = student1;
student[2] = student2;
student[3] = student3;
AgeComparator ageComparator = new AgeComparator();
Arrays.sort(students,ageComparator);
如果下述没加上 <Student> 需要 Student 类做出什么改变
//此为 AgeComparator 类
public class AgeComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o1.name.compareTo(o2.name);
}
}
根据姓名排序
//此在 Test 包下
Student student1 = new Student(name:"bit",age:10);
Student student2 = new Student(name:"hello",age:5);
Student student3 = new Student(name:"gbk",age:12);
Student[] students = new Student[3];
student[1] = student1;
student[2] = student2;
student[3] = student3;
NameComparator nameComparator = new NameComparator();
Arrays.sort(students,nameComparator);
注意 下列代码 写成 return o1.name - o2.name; 可以吗, 为什么
//此为 NameComparator 类
public class NameComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o1.name.compareTo(o2.name);
}
}
Comparable 接口和 Comparator 接口的区别
怎么利用 Comparable 接口来实现 bubbleSort 方法
为什么实现 Comparator 接口可以只重写接口里的 compare 抽象方法
Cloneable 接口为一个空接口,里面什么都没有,也被叫做标记接口,表示允许被克隆
怎么使用 Object 祖先类中的 clone 方法
CloneNotSupportedException 是什么异常,克隆不被支持
为什么使用祖先类中的 clone 方法要强转 (涉及向下转型为什么要强转)
什么叫做浅拷贝
什么叫做深拷贝
深拷贝与浅拷贝取决于代码怎么写
深拷贝与浅拷贝代码实现的区别
被克隆的类必须实现 Cloneable 接口
抽象类和接口的区别
什么叫做静态内部类
如何来获取静态内部类的对象(怎么实例化静态内部类的对象)
实例化静态内部类的对象的过程中也实例了外部类的对象吗
通过静态内部类是否能直接访问外部类的非静态成员变量,除非在静态内部类实例化外部类的对象
通过这个对象来访问
什么时候需要用到内部类
实例内部类是什么
如何来获取实例内部类的对象,(怎么实例化实例内部类的对象)
通过实例内部类是否能直接访问外部类的成员变量
如何访问指定的成员变量(有2种方法)
外部类中的任何成员都可以在实例内部类方法中直接访问吗
实例内部类所处的位置与外部类成员位置相同,因此也受 public 、 private 等访问修饰限定符的约束
在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,必须 : 外部类名称. this . 同名成员来访问
外部类中,不能直接访问实例内部类中的成员,如果要访问必须先要创建内部类的对象
局部内部类是什么
局部内部类的语法格式
局部内部类的使用范围
局部内部类能被 public static 等修饰符修饰吗
什么是匿名内部类
匿名内部类的语法格式
匿名内部类可以定义和正常类一样的成员变量吗