iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java基础巩固抽象类与接口详解
  • 154
分享到

Java基础巩固抽象类与接口详解

2024-04-02 19:04:59 154人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1、抽象类1.1、什么是抽象类1.2、抽象类的用法1.3、抽象类特点(限制条件)2、接口2.1、什么是接口2.2、接口的用法2.3、如何使用接口2.4、接口的特点(限制条件)2.

抽象类与接口

1、抽象类

1.1、什么是抽象类

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类

1.2、抽象类的用法

一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。

abstract class Shape{
   
    public abstract void draw();//抽象方法
}

注意:抽象类也是类,内部可以包含普通方法和属性,甚至构造方法

1.3、抽象类特点(限制条件)

1、使用abstract 修饰的类,就是抽象类

2、使用abstract 修饰的方法,就是抽象方法

3、抽象类不能够进行实例化new 抽象类();

4、里面的成员变量和成员方法都是和普通类是一样的,只不过就是不能进行实例化了

5、当一个普通的类,继承这个抽象类之后,那么这个普通类,必须重写这个抽象类当中所有的抽象方法。

6、抽象类存在的最大的意义就是为了被继承

7、抽象类也可以发生向上转型进一步发生多态

8、当一个抽象类A继承了抽象类B,此时抽象类A可以不重写抽象类B当中的方法

9、当一个普通的类C继承了第8条的A,此时就得重写所有的抽象方法

10、 final不能修饰抽象方法和抽象类

11、抽象方法也不能是private的

12、抽象类当中不一-定有抽象方法,但是如果这个方法是抽象方法,呢么这个类- -定是抽象类

代码示例:

abstract class Shape{
   
    public abstract void draw();//抽象方法
}
abstract class A extends Shape{  //当一个抽象类A继承抽象类Shape时,可以不重写抽象类Shape中的方法
    public abstract void func();
}
class B extends A{  //出来混迟早得还,父类没有重写  你全写
    @Override
    public void draw() {
    }
    @Override
    public void func() {
    }
}
class Circle extends Shape {  //普通类继承了抽象类(内有抽象方法),这里报错,  必须重写Shap类当中的抽象个方法
    @Override
    public void draw() {
        System.out.println("⚪");
    }
}
class Rect extends Shape {
    @Override
    public void draw() {
        System.out.println("♦");
    }
}
class Triangle extends Shape {
    @Override
    public void draw() {
        System.out.println("?");
    }
}
public class Testdemo {
    public static void drawMap(Shape shape){
        shape.draw();
    }
    public static void main(String[] args) {
        //Shape shape = new Shape();    //1、抽象类不能进行实例化
        Circle circle = new Circle();
        Rect rect = new Rect();
        Triangle triangle = new Triangle();
        drawMap(circle);
        drawMap(rect);
        drawMap(triangle);
    }
    //输出结果:
    //就是按顺序输出三种图形
}

2、接口

2.1、什么是接口

接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。

2.2、接口的用法

接口的定义格式与定义类的格式基本相同,将class关键字换成 interface 关键字,就定义了一个接口。

interface IShape{
   
    void draw();
}

2.3、如何使用接口

接口不能直接使用,必须要有一个"实现类"来"实现"该接口,实现接口中的所有抽象方法。

class Circle implements IShape {   //一个普通的类可以通过implemengts来实现这个接口  另外:重写抽象方法
    @Override
    public void draw() {
        System.out.println("⚪");
    }
}

注意:

子类和父类之间是extends继承关系,类与接口之间是 implements 实现关系。

2.4、接口的特点(限制条件)

1、接口使用关键字interface来修饰

2、接口当中的成员方法,只能是抽象方法。所有的方法默认都是public abstract3、接口当中的成员变量,默认是public static final

4、接口当中的方法,如果要实现,需要用default来修饰

5、接口当中的静态的方法,可以有具体的实现

6、接口不能进行实例化。new接口

7、-一个普通的类可以通过implements来实现这个接口

interface IShape{
   
    void draw();
}
class Circle implements IShape {   //一个普通的类可以通过implemengts来实现这个接口  另外:重写抽象方法
    @Override
    public void draw() {
        System.out.println("⚪");
    }
}
class Rect implements IShape {
    @Override
    public void draw() {
        System.out.println("♦");
    }
}
class Triangle implements IShape {
    @Override
    public void draw() {
        System.out.println("?");
    }
}
  
public class Test {
        public static void drawMap(IShape shape){
            shape.draw();
        }
        public static void main(String[] args) {
            //Shape shape = new Shape();    //1、抽象类不能进行实例化
            Circle circle = new Circle();
            Rect rect = new Rect();
            Triangle triangle = new Triangle();
            drawMap(circle);
            drawMap(rect);
            drawMap(triangle);
        }
        //IShape iShape = new IShape();  //接口不能实例化
        
}

2.5、如何实现多个接口

代码示例:

class Animal {
    public String name;
    public Animal(String name) {
        this.name = name;
    }
    public void eat(){
        System.out.println("吃饭饭!");
    }
    // 飞  跑  游泳    布恩那个把这些操作写在这里
}
interface IFlying{
    void fly();
}
interface IRunning{
    void run();
}
interface ISwimming{
    void swim();
}
class Cat extends Animal implements IRunning{
    public Cat(String name) {
        super(name);
    }
    @Override
    public void run() {
        System.out.println(this.name+"is cat 正在跑!");
    }
}
//狗  继承了Animal实现了 跑和游泳接口    先继承后实现   需要重写两接口的方法
class Dog extends Animal implements IRunning,ISwimming{
    public Dog(String name){
        super(name);
    }
    @Override
    public void run() {
        System.out.println(this.name+"is dog 正在跑!");
    }
    @Override
    public void swim() {
        System.out.println(this.name+"正在游泳!");
    }
}
class Robot implements IRunning{
    @Override
    public void run() {
        System.out.println("我是机器人,我在跑!");
    }
}
class Duck extends Animal implements IRunning,ISwimming,IFlying{
    public Duck(String name) {
        super(name);
    }
    @Override
    public void fly() {
        System.out.println(this.name+"鸭子正在飞!");
    }
    @Override
    public void run() {
        System.out.println(this.name+"鸭子正在跑!");
    }
    @Override
    public void swim() {
        System.out.println(this.name+"鸭子正在游泳!");
    }
}
public class TestDemo1 {
    public static void walk(IRunning iRunning){
        iRunning.run();
    }
    public static void fly(IFlying iFlying){
        iFlying.fly();
    }
    public static void swim(ISwimming iSwimming){
        iSwimming.swim();
    }
    public static void main(String[] args) { 
        //swim(new Dog("小狗"));
        Duck duck = new Duck("小鸭子");
        swim(duck);
        walk(duck);
        fly(duck);
    }
    public static void main2(String[] args) {
        walk(new Cat("mimi"));
        walk(new Dog("mimi2"));
        walk(new Robot());
    }
    public static void main1(String[] args) {
        Animal animal = new Cat("mimi");
        Animal animal2 = new Dog("mimi2");
        IRunning iRunning = new Cat("mimi");
        IRunning iRunning2 = new Dog("mimi2");
        ISwimming iSwimming2 = new Dog("mimi2");
    }
}

2.6、接口于接口之间的继承关系

类和类之间是单继承的,一个类可以实现多个接口,接口与接口之间可以多继承。即:用接口可以达到多继承的目的。接口可以继承一个接口, 达到复用的效果. 使用 extends 关键字.

interface C extends A,B{
    void funcC();
}
class AA implements C{    //类和接口之间是implements  那么接口与接口之间呢----extends[扩展]
    @Override
    public void funcC() {
        System.out.println("funcC");
    }
    @Override
    public void funcA() {
    }
    @Override
    public void funcB() {
    }
}

2.7、如何使用接口

在 sort 方法中会自动调用 compareTo 方法. compareTo 的参数是 Object , 其实传入的就是 Student 类型的对象.然后比较当前对象和参数对象的大小关系(按分数来算).

import java.util.Arrays;
class Student implements Comparable<Student>{
    public String name;
    public int age;
    public double score;
    public Student(String name, int age, double score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", score=" + score +
                '}';
    }
    @Override
    public int compareTo(Student o) {
      
        //return this.name.compareTo(o.name);//姓名比较
        //return this.age-o.age;//年龄比较
        return (int) (this.score-o.score);//分数比较
    }
}
public class Test {
    public static void main(String[] args) {
        Student student1 = new Student("zhangsan",98,78.9);
        Student student2 = new Student("lisi",38,18.9);
        System.out.println(student1.compareTo(student2));
    }
    public static void main1(String[] args) {
        Student[] students = new Student[3];
        students[0] = new Student("zhangsan",98,78.9);
        students[1] = new Student("lisi",38,18.9);
        students[2] = new Student("abc",78,88.9);
        Arrays.sort(students);
        System.out.println(Arrays.toString(students));
    }
}

到此这篇关于Java基础巩固抽象类与接口详解的文章就介绍到这了,更多相关Java抽象类与接口内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java基础巩固抽象类与接口详解

本文链接: https://www.lsjlt.com/news/148002.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java基础巩固抽象类与接口详解
    目录1、抽象类1.1、什么是抽象类1.2、抽象类的用法1.3、抽象类特点(限制条件)2、接口2.1、什么是接口2.2、接口的用法2.3、如何使用接口2.4、接口的特点(限制条件)2....
    99+
    2022-11-13
  • Java入门基础之抽象类与接口
    目录一.抽象类1.什么是抽象类2.语法规则3.抽象类的作用二.接口1.什么是接口2.语法规则3.实现多个接口4.接口之间的继承三.接口的使用实例1. Comparable 接口2.C...
    99+
    2022-11-13
  • Java抽象类(基础详解)
    目录 1.概念 2.抽象类的使用 2.1抽象方法 2.2抽象类 2.3抽象类的使用 2.4注意事项 1.概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法,普通方法,static方法,常量和变量等内容...
    99+
    2023-10-21
    java 开发语言
  • java中抽象类、抽象方法、接口与实现接口实例详解
    前言对于java中的抽象类,抽象方法,接口,实现接口等具体的概念就不在这里详细的说明了,网上书本都有很多解释,主要是我懒,下面通过一个例子来说明其中的精髓要点,能不能练成绝世武功,踏上封王之路,就看自己的的啦(不要误会,我指的只是我自己啦啦...
    99+
    2023-05-30
    java 抽象类 接口
  • 【JAVA】抽象类与接口
    作者主页:paper jie_的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将ja...
    99+
    2023-09-08
    java 开发语言
  • JAVA抽象类,接口,内部类详解
    目录一.内容抽象类抽象方法与抽象类抽象类的使用接口接口的概念接口的定义接口中的成员变量接口中的方法接口的继承接口的实现/使用接口与抽象类的差异面向接口编程内部类非静态内部类静态内部类...
    99+
    2022-11-12
  • 【JAVA】抽象类与接口--下
    ⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 Ǵ...
    99+
    2023-09-03
    java 开发语言
  • Java多态性抽象类与接口细致详解
    目录1、多态性1.1向上转型1.2向下转型2、抽象类2.1抽象类的基本概念3、接口3.1接口的基本概念3.2接口的使用限制3.3使用接口定义标准3.4抽象类与接口的区别1、多态性 多...
    99+
    2022-11-12
  • Java面向对象基础知识之抽象类和接口
    抽象类(abstract): 抽象类不能创建实例,它只能作为父类被继承。抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。从多个具有相同特征的类中抽象出一个抽象类,以这个抽...
    99+
    2022-11-12
  • Java零基础也看得懂的单例模式与final及抽象类和接口详解
    目录1.单例模式1.饿汉式和懒汉式的实现2.饿汉式3.懒汉式4.懒汉式和饿汉式的区别2.final的使用1.基本介绍2.使用场景3.使用注意事项和细节讨论3.抽象类1.基本介绍2.使...
    99+
    2022-11-13
  • Java超详细讲解抽象类与接口的使用
    目录一、抽象类1、抽象类的语法2、抽象类的特性3、抽象类的作用二、接口1、接口的概念2、接口使用3、接口特性4、实现多个接口5、接口间的继承6、常用的接口(1)Comparable接...
    99+
    2022-11-13
  • Java 接口和抽象类的区别详解
    目录什么是抽象类和接口? 区别在哪里?抽象类接口抽象类和接口解决了什么问题?如何模拟抽象类和接口如何决定该用抽象还是接口?什么是抽象类和接口? 区别在哪里? 不同的编程语言对接口和...
    99+
    2022-11-12
  • java中的抽象类和接口定义与用法详解
    目录一、抽象类1.什么叫抽象类?2.抽象类的特点:3.成员特点:二、接口1.接口是什么?2.接口的特点3.接口的组成成员4.类与抽象的关系:5.抽象类与接口的区别:一、抽象类...
    99+
    2022-11-12
  • Java中的多态、抽象类和接口详解
    目录1.多态1.1 向上转型1.2 向下转型1.3 实现多态的条件1.4多态的特点与使用1.5多态的应用以父类类型作为方法的参数使用父类型作为方法的返回值1.6 多态的注意点2.抽象...
    99+
    2022-11-13
  • Java抽象类与接口怎么掌握
    本文小编为大家详细介绍“Java抽象类与接口怎么掌握”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java抽象类与接口怎么掌握”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。abstractabstract介绍:...
    99+
    2023-06-30
  • Java抽象类与接口实例分析
    这篇“Java抽象类与接口实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java抽象类与接口实例分析”文章吧。1.抽...
    99+
    2023-06-30
  • JAVA接口与抽象类怎么使用
    本篇内容介绍了“JAVA接口与抽象类怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!接口概述当需要从几个类中派生出一个类,继承他们所有...
    99+
    2023-07-02
  • Java超详细介绍抽象类与接口的使用
    目录1.抽象类的语法和特性1.1语法1.2特性2.接口的语法和使用2.1语法2.2特性1.抽象类的语法和特性 1.1语法 1.在Java中,一个类如果被abstract 修饰称为抽象...
    99+
    2022-11-13
  • Java接口的继承与抽象类介绍
    这篇文章主要讲解了“Java接口的继承与抽象类介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java接口的继承与抽象类介绍”吧!在实施接口中,我们利用interface语法,将inter...
    99+
    2023-06-02
  • Java抽象类和接口的区别详情
    1、抽象类 vs 接口  方法类型: 接口只能有抽象方法。抽象类可以有抽象和非抽象方法。从 Java 8 开始,它也可以有默认和静态方法。 最终变量: 在 Java...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作