子类继承父类的语法规则

一、接口没有构造方法

 

二、子类继承父类会先构造父类再构造子类

例子代码

1、抽象父类

import java.sql.*;
public abstract class AbstractSuper {
 public AbstractSuper(){
  System.out.println("抽象父类的方法");
 }
 public abstract void AbstractMethod() throws SQLException;
}

 

2、继承子类

public class AbstractSub extends AbstractSuper{
 public void AbstractMethod(){
  System.out.println("现实了父类抽象类的抽象方法!");
 }
 
 public AbstractSub(){
  System.out.println("子类");
 }
 
 public static void main(String[] arg){
  AbstractSub sub = new AbstractSub();
  sub.AbstractMethod();
 }
}

 

运行子类的main 结果是:

 

抽象父类的方法
子类
现实了父类抽象类的抽象方法!

 

三、子类实现抽象父类(抽象类、接口)的方法要看的参数有

       1、返回类型

       2、方法名

       3、方法参数的数量与类型

    而不看后边的throws 什么异常

 

 

四、Override 的特点

1、Override 一般是为了实现多态。子类继承父类或者接口时用到

看下面的例子

父类


public class CommSuper {
 public void superMethod(){
  System.out.println("this is commsuper method");
 }
}

 

子类


public class CommSub extends CommSuper{
 public void superMethod(){
  System.out.println("this is commSub method");
 }
 
 public static void main(String[] arg){
  CommSub sub = new CommSub();
  sub.superMethod();
  
  CommSuper sup = new CommSuper();
  sup.superMethod();
  
  //调用的是多态类子类的实现方法
  CommSuper subSup = new CommSub();
  subSup.superMethod();
  
 }
}

 

最后运行 main 方法的结果是:

this is commSub method
this is commsuper method
this is commSub method

 

特别注意最后的方法调用,会直接执行多态中Override 后子类的方法。Override 会在很多的框架中用到,特别是IOC 反转调用时,用父类访问子类

 

五、Override 与 Overload 的区别

Override 是继承过程中体现的,是子类实现父类方法

OverLoad 是本类体现的,共同的方法名,不同的参数

 

 

### Java 子类继承父类的示例语法 在 Java 中,子类通过 `extends` 关键字继承父类。以下是关于子类继承父类的一些重要概念及其对应的示例代码。 #### 1. 基本继承结构 子类可以通过 `super()` 方法显式调用父类的构造函数,并传递必要的参数[^1]。如果没有显式的 `super()` 调用,默认会调用无参的父类构造函数。如果父类没有无参构造函数,则必须提供带参的 `super()` 调用来初始化父类实例。 ```java public class Parent { public Parent(String name) { System.out.println("Parent constructor called with name: " + name); } } public class Child extends Parent { public Child() { super("ChildName"); // 显式调用父类构造函数并传入参数 System.out.println("Child constructor called"); } } ``` #### 2. 多层继承 Java 支持多层继承,在这种情况下,子类不仅继承了直接父类的方法和属性,还可能间接继承更上一层祖先的内容[^2]。例如: ```java class Grandparent { public void grandMethod() { System.out.println("Grandparent method invoked."); } } class Parent extends Grandparent { public void parentMethod() { System.out.println("Parent method invoked."); } } class Child extends Parent { public void childMethod() { System.out.println("Child method invoked."); } public static void main(String[] args) { Child c = new Child(); c.grandMethod(); // 可以访问祖方法 c.parentMethod(); // 可以访问父类方法 c.childMethod(); // 访问自己的方法 } } ``` #### 3. 子类使用父类的依赖注入 在某些场景下,父类可能会持有某种依赖关系(如外部服务),而子类需要利用该依赖完成特定功能。此时可通过构造器或 setter 注入的方式共享依赖对象[^3]。 ```java class Dependency { public void performAction() { System.out.println("Dependency action performed."); } } class BaseClass { protected Dependency dependency; public BaseClass(Dependency dep) { this.dependency = dep; } public void useDependency() { if (dependency != null) { dependency.performAction(); } } } class SubClass extends BaseClass { public SubClass(Dependency dep) { super(dep); // 将依赖注入到基中 } @Override public void useDependency() { System.out.println("SubClass using dependency..."); super.useDependency(); } } ``` #### 4. 子类访问父类成员变量 根据父类成员变量的访问控制权限(private, protected 或 public),子类可以选择不同的方式来操作它们。对于私有字段,通常需借助 getter 和 setter 方法;而对于受保护或者公开的字段,则可直接引用[^4]。 ```java class SuperClass { private String secret = "Secret Data"; protected int number = 42; public String getSecret() { return secret; } } class DerivedClass extends SuperClass { public void displayInfo() { System.out.println("Protected variable value: " + number); System.out.println("Private field via accessor: " + getSecret()); } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值