Java基础精讲:final、接口、static与抽象类
需积分: 10 188 浏览量
更新于2024-09-19
收藏 54KB DOC 举报
"Java基础学习总结的知识点,包括final、接口、static、抽象类和自定义类型排序的讲解"
在Java编程中,掌握基础知识是非常重要的,以下是对这些关键概念的详细解释:
1. **final**
- 当`final`修饰变量时,这意味着变量一旦赋值后就不能再改变。对于引用类型,`final`变量的引用不能改变,但引用的对象的内部状态可以改变。
- `final`修饰类时,表示该类不能被其他类继承,它是最终的。
- `final`修饰方法意味着这个方法不能在子类中被重写,确保了方法的行为一致性。
2. **接口(Interface)**
- 接口中的成员变量默认都是`public static final`的,相当于常量。接口中的方法默认为`public abstract`,没有方法体,必须由实现接口的类来提供具体实现。
- 接口中不能定义私有方法,所有的方法和属性对外都是公开的。
3. **static**
- `static`关键字用于声明类级别的变量和方法,这意味着它们属于类而不是类的实例。静态属性在类加载时初始化,且在内存中只有一份副本,存储在方法区。
- 静态方法不能访问非静态成员,因为静态方法与类关联,而非静态成员与类的实例关联。相反,非静态方法可以访问静态成员,因为它可以通过类实例或类名直接调用。
4. **抽象类(Abstract Class)**
- 抽象类可以包含抽象方法(没有方法体的方法)以及非抽象方法。抽象类不能被实例化,必须通过其子类来实例化。
- 抽象类可以有构造方法,子类实例化时会调用父类的构造方法。抽象类不能用`final`修饰,因为`final`类不能有子类,而抽象类需要子类来实现其抽象方法。
5. **自定义类型的排序**
- 对于自定义类型,如果要实现排序,需要让该类实现`Comparable`接口,重写`compareTo()`方法,根据需求定义比较规则。
- 另一种方式是创建一个实现了`Comparator`接口的类,然后在`Collections.sort()`或`Arrays.sort()`方法中传入该比较器实例,这样可以灵活地控制排序逻辑。
下面是一个简单的例子,展示了如何对自定义的`Student`类进行排序:
```java
class Student implements Comparable<Student> {
int id;
String name;
// 构造方法、getter和setter省略
@Override
public int compareTo(Student other) {
return this.id - other.id; // 按id从小到大排序
}
}
public class ArrayListTest03 {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student(2, "zhangsan"));
students.add(new Student(1, "lisi"));
students.add(new Student(3, "wangwu"));
Collections.sort(students);
for (Student student : students) {
System.out.println(student);
}
}
}
```
以上就是关于Java基础学习的一些重要知识点,理解并熟练运用这些概念是成为一名合格的Java开发者的基础。在实际编程中,应不断实践和深入理解这些概念,以便更好地解决问题。
2020-04-03 上传
2023-10-24 上传
2018-07-03 上传