alpha第五章 多态

发布于:2025-02-11 ⋅ 阅读:(71) ⋅ 点赞:(0)

1.instanceof Cat

2.Cat

final 修饰符在 Java 中是用来表示不可修改或不可继承的意思。我们来逐一分析 final 修饰符在不同情况下的使用:

  1. final 可以修饰类,表示该类不能被继承。

    • 例如:final class MyClass { }
    • 这种情况下,MyClass 不能作为父类,不能有子类。
  2. 接口final 不能修饰接口。

    • 这意味着我们不能声明一个 final 接口。接口本身就是为了被实现的,不能被标记为 final,因为如果接口被标记为 final,就无法继承它或实现它。
  3. 方法final 可以修饰方法,表示该方法不能被子类重写。

    • 例如:public final void myMethod() { }
    • 这种情况下,子类无法重写 myMethod() 方法。
  4. 变量final 可以修饰变量,表示该变量一旦初始化后不能再修改其值。

    • 例如:final int x = 10;
    • 这表示 x 的值不可更改。

结论:

final 不能修饰接口。

重要

  1. 抽象类不一定含有抽象方法,接口中的方法都是抽象方法

    • 正确。抽象类可以包含抽象方法,也可以包含具体方法(即有方法体)。接口中的方法默认都是抽象方法,除非方法被标记为 default 或 static,这些方法才可以有方法体。
  2. 一个类只能继承一个抽象类,但可以实现多个接口;一个接口可以继承多个接口

    • 正确。Java中,类只能继承一个抽象类(因为Java不支持多重继承),但可以实现多个接口。接口支持多重继承,一个接口可以继承多个接口。
  3. 抽象类和接口中的方法都没有方法体

    • 错误。抽象类中的方法可以没有方法体,也可以有方法体(具体方法)。接口中的方法通常没有方法体,但从Java 8开始,接口可以包含有方法体的 default 方法和 static 方法。
  4. 抽象类可以含有私有成员变量,接口不含有私有成员变量

    • 正确
    • 抽象类:可以有私有成员变量,并且可以通过提供公共方法来操作这些变量。
    • 接口:不能有任何成员变量(除了常量),只能声明方法,且这些方法默认是抽象的。

类实现接口

填空题

一个类如果实现一个接口,那么它需要实现接口中定义的全部(抽象方法),否则该类就被定义为(抽象类)。

接口声明的关键字是______。

填空题

接口声明的关键字(interface)

如果一个类引用了某个接口,就必须在类体中重写接口中定义的所有______。

填空题

如果一个类引用了某个接口,就必须在类体中重写接口中定义的所有(抽象方法)。

抽象方法只要包含抽象方法就可以

可以实现多接口,但不可以实现多继承

implement 接口

extends 父类(抽象)

  1. abstract类中不应该有private的成员

    • 错误。抽象类中是可以有 private 成员的。抽象类的目的是为了提供一个可以被继承的基础类,它的成员可以是 privateprotected 或 public,这取决于具体的设计需求。private 成员在抽象类中是允许的,但它只能被该类的其他成员方法访问。
  2. static方法中能直接调用类里的非static的属性

    • 错误static 方法属于类本身,而不是类的实例,因此它不能直接访问非 static 成员(即实例变量或实例方法)。static 方法只能访问类的 static 成员。如果需要在 static 方法中访问非 static 属性,必须先创建类的实例。
      class MyClass {
          int nonStaticVar = 10;  // 非static属性
          static int staticVar = 20;  // static属性
      
          static void staticMethod() {
              System.out.println(staticVar);  // 可以访问static属性
              // System.out.println(nonStaticVar);  // 编译错误,不能直接访问非static属性
          }
      }


网站公告

今日签到

点亮在社区的每一天
去签到