Java 之抽象类接口自查

什么是抽象类

什么是抽象方法

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 等修饰符修饰吗

什么是匿名内部类

匿名内部类的语法格式

匿名内部类可以定义和正常类一样的成员变量吗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值