Java基础精讲:final、接口、static与抽象类

需积分: 10 1 下载量 162 浏览量 更新于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开发者的基础。在实际编程中,应不断实践和深入理解这些概念,以便更好地解决问题。