当前位置: 首页 > news >正文

Java--多态及抽象类与接口

1.多态

        以不同参数调用父类方法,可以得到不同的处理,子类中无需定义相同功能的方法,避免了重复代码编写,只需要实例化一个继承父类的子类对象,即可调用相应的方法,而只需要维护附父类方法即可。

package classExtends;public class Quadrangle {      //定义四边形类private Quadrangle[] qtest = new Quadrangle[6];private int nextIndex = 0;public void draw(Quadrangle q) {System.out.println(qtest.length);if (nextIndex < qtest.length) {qtest[nextIndex] = q;System.out.println(nextIndex);nextIndex++;}}public static void main(String[] args) {Quadrangle q = new Quadrangle();    //实例化四边形Quadrangle对象,用于调用draw()方法q.draw(new Square());           //以Square正方形对象为参数调用draw()方法q.draw(new Paralllelogram());   //以Paralllelogram对象为参数调用draw()方法}
}class Square extends Quadrangle {   //定义正方形public Square() {System.out.println("正方形");}
}class Paralllelogram extends Quadrangle {    //定义平行四边形public Paralllelogram() {System.out.println("平行四边形");}
}输出:正方形60平行四边形61

2.抽象类

        2.1 关键字:abstract

        一般将父类定义为抽象类,使用这个父类进行集成和多态处理;使用abstract关键字定义的类是抽象类,使用abstract关键字定义的方法是抽象方法;抽象类除了被继承外,无任何其他意义。

        2.2 抽象类不可以实例化对象。

        2.3 抽象方法没有方法体。

        2.4 抽象类被继承后需要实现其中所有的抽象方法。

                也就是保证以相同的方法名称,参数列表,相同的返回值类型创建出非抽象方法。

        语法:

public abstract class Test{                //定义抽象类

        abstract void testAbstract();        //定义抽象方法

}

3.接口

3.1 接口简介

        接口就是抽象类的延伸,可以将接口看做纯粹的抽象类。

3.2 接口特点:

        3.2.1 接口也是一种抽象类,不可以实例化对象。

        3.2.2 接口中所有的方法没有方法体,且需要在其他类中被重写覆盖实现。

        3.2.3 接口中所有的方法都没有方法体。

        3.2.4 使用关键字【interface】进行定义。

        语法:

public interface drawTest{

        void draw();

}

1.public: 接口可以像类一样被权限修饰符修饰,但public关键字仅限于接口在与其同名的文件中被定义。

2.interface:定义接口关键字。

3.drawTest:接口名称。

        3.2.5 一个类实现接口时使用关键字【implements】.

        语法:

public class Parallelogram extends Quadrangle implements drawTest{

        ....//

}

        3.2.6 接口中,方法必须被定义为publicabstract

        2.3.7 接口中定义的任何字段都自动是【static】和【final】的。

        2.3.8 一个类可以实现多个接口

class 类名 implemets 接口1,接口2,接口3....接口n{

        //.......

}

package classExtends;interface drawTest {         //定义接口public void draw();     //定义方法
}//定义平行四边形类,继承四边形类,并实现接口drawTest
class ParallelogramgleUseInterface extends QuadrangleUseInterface implements drawTest {public void draw() {     //由于本类实现了接口drawTest,所以需要重写覆盖draw()方法System.out.println("平行四边形.draw()");}public void doAnything() {   //重写覆盖父类方法//someSentence;}
}class SquareUseInterface extends QuadrangleUseInterface implements drawTest {public void draw() {System.out.println("正方形.draw()");}public void doAnything() {   //重写覆盖父类方法//someSentence;}
}public class QuadrangleUseInterface {       //定义四边形类public void doAnything() {//someSentence;}public static void main(String[] args) {drawTest[] d = {new ParallelogramgleUseInterface(), new SquareUseInterface()};  //接口也可以进行向上转型操作for (int i = 0; i < d.length; i++) {d[i].draw();        //调用draw()方法}}
}输出:平行四边形.draw()正方形.draw()

http://www.lryc.cn/news/206287.html

相关文章:

  • Python手搓C4.5决策树+Azure Adult数据集分析
  • 【tg】6: MediaManager的主要功能
  • NPM-安装报错connect ETIMEDOUT
  • 机器学习之查准率、查全率与F1
  • *Django中的Ajax 纯js的书写样式1
  • 谈谈node架构中的线程进程的应用场景、事件循环及任务队列
  • http代理IP它有哪些应用场景?如何提升访问速度?
  • Armv8/Armv9的VIPT的别名问题是如何解决的
  • java/javaswing/窗体程序,人脸识别系统,人脸追踪,计算机视觉
  • 设计模式(16)迭代器模式
  • Openssl数据安全传输平台011:秘钥协商服务端
  • 【23种设计模式】里氏替换原则
  • 嵌入式系统设计师考试笔记之操作系统基础复习笔记一
  • Unity开发之观察者模式(事件中心)
  • 16、window11+visual studio 2022+cuda+ffmpeg进行拉流和解码(RTX3050)
  • 【C++笔记】如何用检查TCP或UDP端口是否被占用
  • “华为杯”研究生数学建模竞赛2015年-【华为杯】D题:面向节能的单/多列车优化决策问题
  • 『第三章』雨燕栖息地:Swift 开发环境
  • elasticsearch-5.6.15集群部署,如何部署x-pack并添加安全认证
  • C++ list 模拟实现
  • Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (三)
  • 主流电商平台价格如何高频监测
  • Spring关于注解的使用
  • 图像处理入门 1(Introduction to image processing)
  • 中国大模型开源创新与合作的新篇章 | 2023 CCF中国开源大会
  • vue项目切换页面白屏的解决方案
  • 5G vs 4G
  • 【JavaEE重点知识归纳】第11节:认识异常
  • 一键自助建站系统api版系统源码
  • 全国三维数字化创新设计大赛湖北赛区省赛成功举办