璟雯院

珺璟如晔,雯华若锦

用户工具

站点工具


technology_stack:java:oop

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
technology_stack:java:oop [2023/03/06 03:38] – 继承 温婕莺technology_stack:java:oop [2023/03/06 06:24] (当前版本) 温婕莺
行 52: 行 52:
  
 在父类没有无参数构造函数的时候,就需要使用super(...)方法来构造父类。 在父类没有无参数构造函数的时候,就需要使用super(...)方法来构造父类。
 +
  
 ===== 多态 ===== ===== 多态 =====
 +
 +Java的实例方法调用是基于运行时的实际类型的动态调用,而非变量的声明类型。即如果子类修改了某一方法,在后续使用父类引用时还是运行的该子类的方法。
 +
 +多态允许添加更多类型的子类实现功能扩展,却不需要修改基于父类的代码。
 +
 +==== 覆写 ====
  
 如果子类定义了父类方法签名完全相同的方法,则被称为覆写 (Override)。 如果子类定义了父类方法签名完全相同的方法,则被称为覆写 (Override)。
行 59: 行 66:
 在函数前进行注解,即 @Override ,可以让编译器帮助检查是否进行了正确的覆写。不过注解是不必须的。 在函数前进行注解,即 @Override ,可以让编译器帮助检查是否进行了正确的覆写。不过注解是不必须的。
  
-Java的实例方法调用是基于运行时的实际类型的动态调用,而非变量的声明类型。即如果子类修改了某一方法在后续使用父类引用时还是运行的该子类的方法。+如果子类覆写中需要调用父类被覆写的方法,可以使用super关键字来调用
  
-多态允许添加更多类实现功能扩展不需要修改基于父类的代码+继承允许子类覆写父类的方法,如果父不允许覆写,可以把该方法标记为final。 
 + 
 + 
 +==== 抽象类 ==== 
 + 
 +如果父类的方法没有什么际意义只是作为子类覆写的基础。则可以定义成抽象的方法。使用 abstract 来描述。过该类本身也需要abstract饰。 
 + 
 +==== 接口 ==== 
 + 
 +如果某个抽象没有字段,全是抽象方法,我们可以直接定义成接口类型 interface。 
 + 
 +<code java> 
 +interface Person { 
 +    void run(); 
 +    String getName(); 
 +
 +</code> 
 + 
 +当一个具体class去实现interface时,需要使用 implements 关键字. 
 + 
 +<code java> 
 +class Student implements Person { 
 +    private String name; 
 + 
 +    public Student(String name) { 
 +        this.name = name; 
 +    } 
 + 
 +    @Override 
 +    public void run() { 
 +        System.out.println(this.name + " run"); 
 +    } 
 + 
 +    @Override 
 +    public String getName() { 
 +        return this.name; 
 +    } 
 +
 +</code> 
 + 
 +在JAVA中,一个类只能继承另一个类,不过接口就可以多重继承 
 + 
 +===== 内部类 =====
  
 +定义在类中的类是内部类。内部类不能独立创建实例,必须依附于一个外部类实例才行,因为内部类中还存在可以访问外部类的方法。
  
  
/app/www/public/data/attic/technology_stack/java/oop.1678073882.txt.gz · 最后更改: 2023/03/06 03:38 由 温婕莺