Java中的继承与接口解读

 更新时间:2024年02月06日 10:26:12   作者:自然哲学  
这篇文章主要介绍了Java中的继承与接口使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

继承的定义

子类继承父类的属性和行为(方法),使得子类对象可以使用父类中的方法与属性。

在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下

public class 父类{
  String name;//属性
  public void study(){
  System.out.println(name+"正在学习");//方法
  }
}
 
 
public class 子类 extends 父类{
}

每个子类只能继承一个父类,但可以多重继承。

子类可以调用直接父类中的属性和方法

public class Demo{
  public static void main(String[] args) {
   子类 st = new 子类();
    st.name = "学生";
    st.study();
  }
}

运行结果为:

学生正在学习

重写父类中的方法

当一个子类中一个方法具有与其父类中的一个方法相同的签名(指名称、参数个数和类型)和返回值时,称子类中的方法“重写”了父类的方法。

例如:

注意:重写的方法具有与其所重写的方法相同的名称、参数数量、类型和返回值。

public class 子类 extends 父类{
  public void study(){
    System.out.println(name+"正在努力学习");
  }
}

若代码旁有绿色小三角表示,即为重写成功,此时运行结果为:

学生正在努力学习

自动转型(向上转型)

格式:父类名  对象名 = new 子类构造方法

注意:

*自动转型后该对象优先执行子类重写的方法。

*子类中特有的方法不能调用。

public class Demo1{
  public static void main(String[] args) {
   父类 st2 = new 子类();
   st2.name="学生2";
   st2.study();
  }
}

结果为:

学生2正在努力学习

强制转型(向下转型)

格式:子类名 对象名 = (子类名)对象

public class Demo1{
  public static void main(String[] args) {
   父类 st2 = new 子类();
   st2.name="学生2";
   st2.study();
 
   子类 st2 = (子类) st21//强制转型
  }
}

*强制转型的前提是自动转型。

多态

在定义一个方法时,参数类型如为父类,那么继承该父类的子类也可作为方法的参数类型,例如:

public class 父类{
  //参数类型为父类
  public void study(父类 f){
  System.out.println("正在学习");//方法
  }
}
 
public class Demo2{
  public static void main(String[] args) {
   子类 st3 = new 子类();
   st3.study(st3);
  }
}

运行结果为:

正在学习

接口

Java接口可理解为一种特殊的类。

接口定义关键字:interface。

接口中的属性均需在定义时给定初始值,因为接口中的变量均自带static静态关键字,属于全局共享的类变量:

//定义接口:interface
public interface Student {
	//常量
	//static 静态关键字
	//常量通常用大写字母命名
	public static  String NAME = "1";
}

接口中声明的方法默认是抽象方法(即只有方法标识符,而没有方法体)。

//定义接口:interface
public interface Student {
	//常量
	//static 静态关键字
	public static  String NAME = "1";
	//抽象方法
	public abstract void study();
}

Java中一个类可以继承多个接口,且继承接口时必须重写接口中的所有方法

接口继承关键字:implement

接口的意义:

*弥补Java普通类不支持多继承的局限。

*接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。

*接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。

因此在团队开发中起到方法整合的作用,有利为合作开发。        

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java连接FTP服务器图文教程

    java连接FTP服务器图文教程

    这篇文章主要给大家介绍了关于java连接FTP服务器的相关资料,Ftp是一种常见的文件存储服务器,在很多的项目中都有使用,方便存储各种格式的文件,使用java连接ftp文件服务器也是常用的工具类,需要的朋友可以参考下
    2023-08-08
  • springboot tomcat最大线程数与最大连接数解析

    springboot tomcat最大线程数与最大连接数解析

    这篇文章主要介绍了springboot tomcat最大线程数与最大连接数解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java基于接口实现模拟动物声音代码实例

    Java基于接口实现模拟动物声音代码实例

    这篇文章主要介绍了Java基于接口实现模拟动物声音代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • spring BeanProcessor接口详解

    spring BeanProcessor接口详解

    这篇文章主要介绍了spring BeanProcessor接口的相关资料,帮助大家更好的理解和学习使用spring,感兴趣的朋友可以了解下
    2021-03-03
  • Java字节流 从文件输入输出到文件过程解析

    Java字节流 从文件输入输出到文件过程解析

    这篇文章主要介绍了Java字节流 从文件输入 输出到文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java 实战项目锤炼之网上花店商城的实现流程

    Java 实战项目锤炼之网上花店商城的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+jsp+servlet+mysql+ajax实现一个网上花店商城系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • java为什么会出现精度丢失这种现象你知道吗

    java为什么会出现精度丢失这种现象你知道吗

    这篇文章主要介绍了Java精度丢失的问题,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下,希望能够给你带来帮助
    2021-08-08
  • Spring集成Redis详解代码示例

    Spring集成Redis详解代码示例

    这篇文章主要介绍了Spring集成Redis详解代码示例,介绍了Eclipse工程结构,POM依赖,Spring配置,Redis配置信息以及Java代码等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 解析java中的condition

    解析java中的condition

    Condition 将 Object 监视器方法(wait()、notify()和notifyAll())分解成截然不同的对象,以便通过将这些对象与任意Lock实现组合使用,为每个对象提供多个等待 set(wait-set)
    2021-06-06
  • 详解时间轮TimeWheel的工作原理

    详解时间轮TimeWheel的工作原理

    时间轮(TimeWheel)作为一种高效率的计时器实现方案,在1987年发表的论文Hashed and Hierarchical Timing Wheels中被首次提出。本文主要来聊聊它的工作原理,感兴趣的可以了解一下
    2023-02-02

最新评论