iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java抽象类与接口怎么掌握
  • 649
分享到

Java抽象类与接口怎么掌握

2023-06-30 13:06:48 649人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“Java抽象类与接口怎么掌握”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java抽象类与接口怎么掌握”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。abstractabstract介绍:

本文小编为大家详细介绍“Java抽象类与接口怎么掌握”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java抽象类与接口怎么掌握”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    abstract

    abstract介绍:可以用于修饰:类(抽象类)、方法(抽象方法)

    abstract修饰类:

    ①此类不能实例化(也就是不能创建这个类的对象)

    ②虽然自己不能实例化,但是子类会调用父类的构造器,所以抽象类中一定有构造器

    abstract修饰方法

    ①抽象方法只有方法的声明没有方法体,所在的类一定是抽象类。因为如果类不是抽象的,那这个类就可以造对象,可以造对象就可以调用。反之抽象类中可以没有抽象方法。

    ② 若子类重写了子类重写了父类所有的抽象方法才能实例化,如果没有全部重写,那么子类也是抽象类,也需要用abstract修饰。

    ③abstract不能用来修饰私有方法、静态方法、final关键字修饰的方法、final关键字修饰的类。

    final明确不能继承,但abstract需要子类继承所以不能用,因为如果两个方法都是static,不认为两个方法是重写或者覆盖,所以abstract用来修饰静态方法,就无法重写。

    抽象的应用

    模板方法设计模式。在软件开发中实现一个算法时,整体步骤很固定、通用,这些步骤在父类中写好,某些易变的和不确定的部分可以抽象出来给子类实现。

    抽象类的匿名子类对象

    public static void main(String[] args){    //匿名对象    eat(new son());    //非匿名类的非匿名对象    son John=new son();    eat(John);    //匿名子类对象    father f=new father(){//抽象类造对象必须要重写方法,了解看得懂就ok了。        @Override        public void work() {        }        @Override        public void info(father i) {        }    };}//普通方法public static void eat(father f){    System.out.println("吃饭");}//父类public abstract static class father{    String name;    int age;    public abstract void work();//抽象方法不能有方法体    public abstract void info(father i);}//子类public class son extends father{//继承    String name;    int age;    @Override    public void work(){        System.out.println("上学");    }    @Override    public void info(father i) {        System.out.println("name:"+i.name+" age:"+i.age);    }}//接口的匿名对象非匿名的对象可以被多次调用,匿名的对象只能使用一次Computer com=new Computer();//创建了接口的非匿名实现类(子类)的非匿名对象,类和对象都是有名的Flash flash = new Flash();//2.创建了接口的非匿名实现类的匿名对象,对象匿名了com.transferData(new Printer());//3创建了接口的匿名实现类的非匿名对象,就是类是匿名的,就不知道是接口中的哪个实现类,所以 需要重写方法进行说明USB  phone = new USB{    public void start(){        ...    }};//4.创建了接口的匿名实现类的匿名对象com.transferData(new USB(){    public void start(){        ...    }      });

    final关键字

    final修饰类:此类不能被其他类所继承,比如:String、System、StringBuffer

    final修饰方法:此方法不能再被重写,比如:Object类中的getClass()

    static final用来修饰属性:全局常量

    final修饰变量:此时的变量就称为是一个常量

    final修饰属性:可以考虑赋值的位置:显式初始化,代码块中初始化、构造器中初始化

    final修饰局部变量:尤其是用final修饰形参时,表明此形参是一个常量,当调用此方法时,给常量形参赋实参,一旦赋值就只能在方法体内使用此形参,但不能重新赋值

    接口

    接口使用Interface来定义,和类是并列关系

    接口的定义以及接口中的成员:

    接口相关规则

    接口中所有方法都是抽象的。

    即使没有显式的将接口中的成员用public标示,也是public访问类型的

    接口中变量默认用 public static final标示,所以接口中定义的变量就是全 局静态常量。

    可以定义一个新接口,用extends去继承一个已有的接口

    可以定义一个类,用implements去实现一个接口中所有方法。

    可以定义一个抽象类,用implements去实现一个接口中部分方法。

    接口的特性

    接口不可以被实例化

    实现类必须实现接口的所有方法

    实现类可以实现多个接口

    接口中的变量都是静态常量

    如果类覆盖了接口中所有的抽象方法,则可以创造实例;如果类没有覆盖接口中所有的抽象方法,则该类仍为抽象类。Java类可以实现多个接口——弥补了单继承性的缺陷

    class AA extends BB implements CC,DD,EE

    接口和接口之间可以继承,且可以多继承。接口的使用体现了多态性。接口是一种规范,面向接口编程

    抽象类和接口的异同

    相同点:不能实例化,都可以包含抽象方法

    不同点:

    把抽象类和接口(java7、java8)的定义、内部结构解释说明

    类:单继承性,接口:多继承性。

    抽象类与接口的练习

     abstract class Door {    //开门    public abstract void openDoor();    //关门    public abstract void closeDoor();} interface Lock {    public static final int num = 200;    //开    public abstract void openLock();    //上锁    public abstract void closeLock();}class LockDoor extends Door implements Lock {    public void openDoor() {        System.out.println("开门");    }    public void closeDoor() {        System.out.println("关门");    }    public void openLock() {        System.out.println("开锁");    }    public void closeLock() {        System.out.println("上锁");    }  }public class TestLockDoor {    public static void main(String[] args) {        LockDoor lockDoor = new LockDoor();        lockDoor.openLock();        lockDoor.openDoor();        lockDoor.closeDoor();        lockDoor.closeLock();    }}

    接口的应用

    两种设计模式

    - 代理模式

    代理设计就是为其他对象提供一张代理以控制对这个对象的访问

    应用场景:安全代理、远程代理、延迟加载

    分类:静态代理、动态代理

    - 工厂模式

    实现创建者和调用者的分离

    interface A{    int x=0;}class B{    int x=1;}class C extends B implements A{    public void pX(){        System.out.println(x);    }    public static void main(String[] args){        new C().pX();    }}//问题:编译期不知道是要输出哪个xSystem.out.println(super.x);//这个调用的是父类中的System.out.println(A.x);//这个调用的是接口中的

    java8中接口新特性

    jdk8:除了全局常量和抽象方法,还可以定义静态方法和默认方法(default关键字修饰)

    public interface CompareA{    public static void method1(){  //静态方法          System.out.println("CompareA:北京");      }       public default void method2(){    //默认方法            System.out.println("CompareA:上海");        }  }

    接口中定义的静态方法只能通过接口来调用,接口.方法。

    通过实现类的对象,可以调用接口中的默认方法,对象.方法。

    如果实现类重写了接口中的默认方法,调用时仍然调用的是重写以后的方法

    如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的方法,子类在没有重写此方法的情况下调用的是父类中的方法——类优先原则

    如果实现类实现了多个接口,而这个多个接口中定义了同名同参数的默认方法,在实现类没有重写方法的情况下会报”接口冲突“错误,此时需要重写。

    如何在子类(或者实现类)调用父类、接口中被重写的方法? 接口.super.方法。

    内部类

    需要关注的问题:如何实例化成员内部类的对象:外部类Person,静态内部类Brain,非静态内部类Lungs,静态成员内部类:new 外部类.内部类()

    Person.Brain brain=new Person.Brain();

    非静态成员内部类:先造对象,对象.new 内部类()

    Person p=new Person();p.Lungs lungs=p.new Lungs();

    如何在成员内部类中区分调用外部类的结构

    形参直接调,所在类的用this.结构,外部类的用外部类.this.结构

    成员内部类和局部内部类在编译以后都会生成字节码文件

    成员内部类:外部类.内部类名.class

    局部内部类:外部类.数字 内部类名.class

    在局部内部类的方法中,如果调用局部内部类所在的方法中的局部变量,该局部变量必须用final关键字修饰(JAVA8之后可以不写出来,但仍然还是final的)

    public void Person(){    int num=10;    class AA{//局部内部类        public void show(){//局部内部类的方法            num=20;//试图修改会报错            System.out.println(num);//调用局部内部类所在的方法中的局部变量        }    }}

    开发中局部内部类的使用

    常用的局部内部类:

    //方式一public Comparable getCompareble(){    class MyComparable implements Comparable{//局部内部类        public int compareTo(Object o){            return 0;        }    }    return new MyComparable();}//方式二public Comparable getCompareble(){    return new Comparable(){        public int CompareTo(Object o){            return 0;        }    };}

    Java允许将一个类A声明在另一个类B中,A为内部类,B为外部类

    内部类的分类:成员内部类、局部内部类(方法内,代码块内,构造器内)

    成员内部类

    作为外部类的成员:可以调用外部类的结构,可以被static修饰

    作为一个类:可以定义属性、方法、构造器,可以用final、abstract修饰,可以被继承

    this.name//内部类的属性

    Person.this.name//外部类的属性

    读到这里,这篇“Java抽象类与接口怎么掌握”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

    --结束END--

    本文标题: Java抽象类与接口怎么掌握

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

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

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

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

    下载Word文档
    猜你喜欢
    • Java抽象类与接口怎么掌握
      本文小编为大家详细介绍“Java抽象类与接口怎么掌握”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java抽象类与接口怎么掌握”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。abstractabstract介绍:...
      99+
      2023-06-30
    • Java抽象类怎么掌握
      本文小编为大家详细介绍“Java抽象类怎么掌握”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java抽象类怎么掌握”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。抽象类1.引出抽象类向上转型带来的最大的好处就是参...
      99+
      2023-07-02
    • Java深入数据结构理解掌握抽象类与接口
      目录abstractabstract修饰方法抽象类的匿名子类对象final关键字接口接口相关规则接口的特性抽象类和接口的异同内部类总结abstract abstract介绍:可以用于...
      99+
      2022-11-13
    • 【JAVA】抽象类与接口
      作者主页:paper jie_的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将ja...
      99+
      2023-09-08
      java 开发语言
    • 【JAVA】抽象类与接口--下
      ⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 Ǵ...
      99+
      2023-09-03
      java 开发语言
    • JAVA接口与抽象类怎么使用
      本篇内容介绍了“JAVA接口与抽象类怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!接口概述当需要从几个类中派生出一个类,继承他们所有...
      99+
      2023-07-02
    • Java抽象类与接口怎么定义使用
      这篇文章主要介绍“Java抽象类与接口怎么定义使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java抽象类与接口怎么定义使用”文章能帮助大家解决问题。1.对象的比较两个对象要进行比较之前,我们首...
      99+
      2023-06-30
    • Java抽象类和接口怎么用
      这篇文章将为大家详细讲解有关Java抽象类和接口怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。抽象类什么是抽象类呢?在现实生活中,我们说“人类”,我们无法对应到具体某个人,同样的,“动物类”、“图形...
      99+
      2023-06-29
    • java中抽象类、抽象方法、接口与实现接口实例详解
      前言对于java中的抽象类,抽象方法,接口,实现接口等具体的概念就不在这里详细的说明了,网上书本都有很多解释,主要是我懒,下面通过一个例子来说明其中的精髓要点,能不能练成绝世武功,踏上封王之路,就看自己的的啦(不要误会,我指的只是我自己啦啦...
      99+
      2023-05-30
      java 抽象类 接口
    • Java抽象类与接口实例分析
      这篇“Java抽象类与接口实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java抽象类与接口实例分析”文章吧。1.抽...
      99+
      2023-06-30
    • java接口和抽象类怎么使用
      Java 接口和抽象类是面向对象编程的重要概念,用于实现代码的抽象和封装。以下是它们的使用方法:1. 接口:- 定义接口:使用 `i...
      99+
      2023-08-09
      java
    • Java抽象类和接口怎么使用
      本篇内容主要讲解“Java抽象类和接口怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java抽象类和接口怎么使用”吧!看一下具体的例子,有一些小细节平时可能不会注意。class ...
      99+
      2023-06-02
    • java中接口与抽象类有什么不同
      今天就跟大家聊聊有关java中接口与抽象类有什么不同,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。详解java中接口与抽象类的区别  1.abstract class 在 Java ...
      99+
      2023-05-30
      java
    • Java中怎么比较抽象类与接口的异同
      本篇内容主要讲解“Java中怎么比较抽象类与接口的异同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中怎么比较抽象类与接口的异同”吧!一.抽象类(一)概念    &n...
      99+
      2023-06-22
    • Python中的接口类与抽象类
      面向对象中的继承有两种用途:1)可以通过继承做到代码重用,并完成扩展;2)接口继承。所谓的接口继承就是定义一个接口类 Interface,接口类中定义了一些接口(就是函数,但这些函数都没有具体的实现),子类继承接口类,并且实现接口中的功能...
      99+
      2023-01-31
      接口 抽象类 Python
    • Java入门基础之抽象类与接口
      目录一.抽象类1.什么是抽象类2.语法规则3.抽象类的作用二.接口1.什么是接口2.语法规则3.实现多个接口4.接口之间的继承三.接口的使用实例1. Comparable 接口2.C...
      99+
      2022-11-13
    • Java接口的继承与抽象类介绍
      这篇文章主要讲解了“Java接口的继承与抽象类介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java接口的继承与抽象类介绍”吧!在实施接口中,我们利用interface语法,将inter...
      99+
      2023-06-02
    • Java中抽象类和接口怎么实现
      本篇内容介绍了“Java中抽象类和接口怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、抽象类1.1 什么是抽象类?1.1 对抽象类...
      99+
      2023-06-26
    • Java中接口与抽象类的区别是什么
      本篇文章为大家展示了Java中接口与抽象类的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一.抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体...
      99+
      2023-05-31
      java 别是 ava
    • java中的接口与抽象类有什么区别
      java中的接口与抽象类有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java 中接口和抽象类的区别与对比接口和抽象类的概念不一样。 接口是对动作的抽象,抽象类是对根...
      99+
      2023-05-31
      java ava
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作