精华内容
下载资源
问答
  • 主要介绍了浅谈Java抽象类和接口的个人理解,具有一定借鉴价值,需要的朋友可以参考下。
  • java抽象类和接口

    千次阅读 2019-05-14 17:34:15
    java抽象类和接口 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:MyEclipse10 作者:朱海恩 撰写时间: 2019.04.30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...

    java抽象类和接口

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    开发工具与关键技术:MyEclipse10

    作者:朱海恩

    撰写时间: 2019.04.30

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    抽象类总结:

    抽象方法只包含一个方法名,而没有方法体,使用abstract修饰

    抽象类必须使用abstract修饰符来修饰

    抽象方法也必须使用abstract修饰符来修饰

    抽象方法不能有方法体

    抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。

    抽象类包含成员变量、方法(普通方法和抽象方法都可以)、初始化块、内部类(接口、枚举)

    抽象类的构造器不能用于创建实例,主要是用于被其子类调用。

    抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类

    Abstract static不能同时修饰一个方法

     

    1. 方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰。抽象方法必须定义在抽象类中,该类必须也被abstract修饰
    2. 抽象类不可以被实例化。为什么?因为调用抽象方法没意义。
    3. 抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则,这个子类还是抽象类。
    4. 抽象类中有构造器函数吗?有,用于给子类对象进行初始化。
    5. 抽象类可以不定义抽象方法吗?可以的。但是很少见,目的就是不让该类创建对象。AWT的适配器对象就是这种类。通常这个类中的方法体,但是却没有内容。

    Abstract class Demo{

    Void show1();  没有方法体

    Void show2(){  有方法体,没有内容

    }

    }

    6、抽象关键字不可以和那些关键字共存?Private不行;Static 不行;Final 不行

     

    7、抽象类一定是父类吗?是的。因为需要子类覆盖其方法后才可以对子类实例化。

     

    8、抽象类和一般类的区别:

    相同点:抽象类和一般类都是用来描述事物的,都在内部定了成员。

    不同点:(1)一般类有足够的信息描述事物。抽象类描述事物的信息有可能不足

    (2)一般类中不能定义抽象类方法,只能定非抽象方法。抽象类中可定义抽象方法,同时也可定义非抽象类

    (3)一般类可以被实例化,抽象类不可以被实例化

     

    接口特点:

    接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字

    接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字

    接口中的方法都是公有的

    编译时自动为接口里定义的方法添加public abstract修饰符

    Java接口里的成员变量只能是public static final共同修饰的,并且必须赋初始值,可以不写public static final,编译的时候会自动添加

     

    接口与抽象类的区别:

    接口里面不可以实现方法体,抽象类可以实现方法体

    接口可以多继承接口,抽象类不可以

    接口需要被子类实现,抽象类是被子类继承(单一继承)

    接口中只能有公有的方法和属性而且必须赋初始值,抽象类中可以有私有方法和属性

    接口中不能存在静态方法,但是属性可以是final,抽象类中方法中可以有静态方法,属性也可以

    展开全文
  • Java抽象类接口实验报告
  • java抽象类和接口有什么意义

    千次阅读 2021-02-04 16:53:06
    用了java这么久,对接口和抽象类使用一直很模糊。为什么接口和抽象类不能实例化,为什么接口可以多个实现而抽象类只能单继承,特别是java8之后,抽象类和接口里面都可以写代码后,就更加分不清了,今天重新整理一下...

    用了java这么久,对接口和抽象类使用一直很模糊。为什么接口和抽象类不能实例化,为什么接口可以多个实现而抽象类只能单继承,特别是java8之后,抽象类和接口里面都可以写代码后,就更加分不清了,今天重新整理一下。

    什么是抽象类(abstract class)

    使用abstract修饰符修饰的类。官方点的定义就是:如果一个类没有包含足够多的信息来描述一个具体的对象,这样的类就是抽象类。

    实际点来说,一个抽象类不能实例化,因为“没有包含足够多的信息来描述一个具体的对象”。但终归属于类,所以仍然拥有普通类一样的定义。依然可以在类的实体(直白点就是能在{}里面)定义成员变量,成员方法,构造方法等。

    那么可能初学者会问:既然不能实例化,那么在类里面定义成员方法,成员变量有什么用。

    抽象类在实际应用中,更多的是因为类中有抽象方法。抽象方法:只声明,不实现。具体的实现由继承它的子类来实现。实际点就是:被abstract修饰的方法,只有方法名没有方法实现,具体的实现要由子类实现。方法名后面直接跟一个分号,而不是花括号。例如:

    abstract class Animal{
        public abstract void run();
    }
    
    class Person extends Animal{
        @Override
        public void run() {
            System.out.println("Person.run");
        }
    }
    

    一个类中含有抽象方法(被abstract修饰),那么这个类必须被声明为抽象类(被abstract修饰)。

    什么是接口(interface)

    官方定义:接口在java中是一个抽象类型,是抽象方法的集合。一个类通过继承接口的方式,从而继承接口的抽象方法。

    从定义上看,接口是个集合,并不是类。类描述了属性和方法,而接口只包含方法(未实现的方法)。接口和抽象类一样不能被实例化,因为不是类。但是接口可以被实现(使用 implements 关键字)。实现某个接口的类必须在类中实现该接口的全部方法。虽然接口内的方法都是抽象的(和抽象方法很像,没有实现)但是不需要abstract关键字。

    接口中没有构造方式(因为接口不是类)

    接口中的方法必须是抽象的(不能实现)

    接口中除了static、final变量,不能有其他变量

    接口支持多继承(一个类可以实现多个接口)

    例如:

    声明两个职业 接口:

    public interface ItWorker {
        String name = "worker";
        public void coding();
    }
    public interface Teacher {
        String name = "teacher";
        public void teaching();
    }
    

    Person实现两种职业接口:

    public class Person implements ItWorker,Teacher{
        @Override
        public void coding() {
            System.out.println("I'm a"+ItWorker.name);
        }
    
    	@Override
    	public void teaching() {
    	   System.out.println("I'm a"+Teacher.name);
    	}
    
    }
    

    抽象类和接口有什么意义

    对于接口

    接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,【接口名】 【对象名】=new 【实现接口的类】,这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理。

    对于接口的作用,在一些小的项目上,很难看出其发挥的优势。这就使一些经常的做小项目的开发人员,做时间久了就感觉不到它有什么好的,有时候写起来还麻烦,干脆不用了。其实,在一些大项目上,接口的作用是发挥地相当的明显的。

    比如:如果你开发业务逻辑代码,当你好不容易的实现了它全部的功能,突然用户需求要改,你在修改你代码的同时,调用你代码的其它人也会改,如果代码关联性强的话,会有很多人都要改动代码,这样一来二去,程序会变得相当的不稳定,而且可能还会出现更多的新Bug,所有人都可能会陷入混乱。

    但如果使用接口的话,在你使用它之前,就要想好它要实现的全部功能(接口实际上就是将功能的封装)。确定下这个接口后,如果用户需求变了,你只要重新写它的实现类,而其它人只会调用你的接口,他不管你是怎么实现的,它只需要接口提供的功能。这样,很可能只需要把你的代码修改就可以了,其他人什么都不用做。

    同时:这样做的话,使得开发人员能够分工明确,只要确定下来接口了,就可以同时进行开发,提高开发效率。另外,使用接口还有使用方便,可读性强,结构清晰
    等优点。

    对于抽象类

    一般来说我们使用普通类来实现接口,这个普通类就必须实现接口中所有的方法,这样的结果就是普通类中就需要实现多余的方法,造成代码冗余。但是如果我们使用的是抽象类来实现接口,那么就可以只实现接口中的部分方法,并且当其他类继承这个抽象类时,仍然可以实现接口中有但抽象类并未实现的方法。

    总结

    我们可以把接口看成一个工具,当我们实现一个接口时,就意味着能使用这一工具,当我们实现多个接口时,就能使用多种工具,就像上面Person可以是多种职业,所以它可以同时实现Teacher和ItWorker接口。

    而抽象类则可以看成是一个祖先,所以一个类只能继承一个祖先,如上Animal是Person的祖先,所以Person具有Animal的一切属性。

    展开全文
  • 下面小编就为大家带来一篇Java基础篇_有关接口和抽象类的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java抽象类和接口的区别

    千次阅读 2020-02-09 16:56:31
    抽象类:如果一个类含有抽象方法(抽象方法是一种特殊的方法,它只有声明,而没有具体的实现),则称这个类为抽象类,...包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它普通类一样,同样...

    如果一个类含有抽象方法,则称这个类为抽象类。抽象类是用abstract关键词修饰的。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。如果一个类继承了抽象类,那么就必须为抽象类中的抽象方法提供定义。如果不那么做,那继承的类也为抽象类。( 抽象方法是一种特殊的方法,它只有声明,而没有具体的实现。)

    抽象类和普通类一样,同样可以拥有成员变量和普通的成员方法。但是抽象类中的抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
     


    接口是对行为的抽象,是用interface关键词修饰的。

    1、接口中也可以含有变量和方法。
    2、但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误)
    3、而方法会被隐式地指定为public abstract方法(并且只能是public abstract方法,用其他关键字,比如private、protected、static、 final等修饰会报编译错误)
    4、一般情况下接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量
    5、另外JDK8允许接口中有 默认方法 、静态方法 。JDK9允许接口中有 私有方法 。它们都可以有具体的实现。 


    总的来说,抽象类和接口主要有以下三种区别:

    1、抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
    2、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
    3、一个类只能继承一个抽象类,而一个类却可以实现多个接口。

    展开全文
  • *接口Alarm(报警)拥有抽象方法...AlarmGuardDoor(防盗门)继承了Door,实现了接口Guard和接口Alarm package step2; public class AlarmGuardDoor extends Door implements Guard, Alarm{ public void open() {

    任务描述
    本关任务:通过编程实例,掌握接口的定义和使用。

    相关知识
    概念:类描述对象的属性和方法。接口则包含类要实现的方法。
    声明:接口通常以interface来声明。
    格式:

    public interface 接口名 {}

    特性:接口中每一个方法都是抽象的,接口中的方法会被隐式的指定为 public abst\fract
    #####接口的实现与继承
    接口的实现:

    • 当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
    • 类使用implements关键字实现接口。在类声明中,implements关键字放在类的声明后面。
    interface Animal {
        public void eat();
        public void travel();
    }
    public class MammalInt implements Animal {
        public void eat() {
            System.out.println("Mammal eats");
        }
        public void travel() {
            System.out.println("Mammal travels");
        }
        public static void main(String args[]) {
            MammalInt m = new MammalInt();
            m.eat();
            m.travel();
        }
    }

    输出结果:
    Mammal eats
    Mammal travels

    接口的继承:

    • 一个接口能继承另一个接口,和类之间的继承方式比较相似。
    • 接口的继承使用extends关键字,子接口继承父接口的方法。

    编程要求

    • 接口Alarm(报警)拥有抽象方法void alarm()
    • 接口Guard(防盗)拥有抽象方法void guard()和防盗年限10年
    • 抽象类Door(门)拥有抽象方法void open()和void close()
    • AlarmGuardDoor(防盗门)类继承了Door类,实现了接口Guard和接口Alarm
    • 在类InterfaceDemo中完成类AlarmGuardDoor的实例化,并分别调用AlarmGuardDoor类中的所有方法查看输出效果(调用方法的顺序:open(),alarm(),guard(),close())。

    AlarmGuardDoor类中:

    • open()方法输出“芝麻开门”,
    • alarm()方法输出“刮风下雨收衣服了”
    • guard()方法输出“防盗效果好”
    • close()方法输出“芝麻关门”

    *接口Alarm(报警)拥有抽象方法void alarm()

    package step2;
    interface Alarm{
        public void alarm();
    }
    

    AlarmGuardDoor(防盗门)类继承了Door类,实现了接口Guard和接口Alarm

    package step2;
    public class AlarmGuardDoor extends Door implements Guard, Alarm{
        public void open()
        {
            System.out.println("芝麻开门");
        }
        public void close()
        {
            System.out.println("芝麻关门");
        }
        public void alarm()
        {
            System.out.println("刮风下雨收衣服了");
        }
        public void guard()
        {
            System.out.println("防盗效果好");
        }
    }

    抽象类Door(门)拥有抽象方法void open()和void close()

    package step2;
    public abstract class Door{
        public abstract void open();
        public abstract void close();
    }

    接口Guard(防盗)拥有抽象方法void guard()和防盗年限10年

    package step2;
    interface Guard{
        final int GUARD_YEAR = 10;
        public void guard();
    }

    在类InterfaceDemo中完成类AlarmGuardDoor的实例化

    package step2;
    public class InterfaceDemo {
        public static void main(String[] args) {
            /*********begin*********/
            //类AlarmGuardDoor实例化,并调用AlarmGuardDoor类中的所有方法。调用的顺序:open(),alarm(),guard(),close()
            AlarmGuardDoor agd=new AlarmGuardDoor();
            agd.open();
            agd.alarm();
            agd.guard();
            agd.close();
            
            
            
            /*********end*********/
        }
    }
    展开全文
  • 抽象类和接口的区别有哪些? 答: 1.抽象类中可以没有抽象方法;接口中的方法必须是抽象方法。 2.抽象类中可以有普通的成员变量;接口中的变量必须是static final类型的,必须被初始化,接口中只有常量,没有变量。 ...
  • 10个Java抽象类和接口的面试题

    千次阅读 2018-03-04 11:00:44
    1. Java抽象类可以有构造函数吗?可以有,抽象类可以声明并定义构造函数。因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当...
  • 1.jdk1.8中,下面有关java 抽象类和接口的区别,说法错误的是? 正确答案: B D A.抽象类可以有构造方法,接口中不能有构造方法 B. 抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通...
  • Java 抽象类和接口的区别应用场景

    千次阅读 2018-07-11 22:15:07
    发现一篇博客写的很好,附链接:点击打开链接
  • Java抽象类和接口.ppt

    2013-09-07 23:18:22
    此书对于你学习Java抽象类和接口有非常大的帮助
  • Java 抽象类和接口

    千次阅读 热门讨论 2021-11-14 16:09:56
    接口的特征三、抽象类和接口的区别 一、抽象类 1.抽象类 1.1抽象类的定义 在Java面向对象当中,所有的对象都是用过类进行描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类没有包含足够多的信息来描述一个...
  • java 抽象类和接口1–基本概念 https://blog.csdn.net/qq_26296197/article/details/81315685 从生活的角度看 把编程映射会日常生活进行对照,那么一个东西,抽象类表示它是什么,接口表示它能做什么。举一个...
  • Java抽象类和接口的区别

    万次阅读 多人点赞 2019-02-07 14:10:07
    Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口...
  • Fruit package step1; public abstract class Fruit { protected String brand; public abstract void show(); } Apple package step1; public class Apple extends Fruit{ public Apple(){ this("黄金苹果...
  • JAVA抽象类和接口

    千次阅读 2021-06-14 21:08:49
    抽象方法,只声明而未实现的方法我们称为抽象方法,所有的抽象方法都需要用abstract关键字声明,包含抽象方法的类也需要使用abstract关键字声明,抽象类和普通类相比,区别在于抽象类带有抽象方法,抽象方法可以只...
  • 一起来搞明白JAVA抽象类和接口

    千次阅读 多人点赞 2018-01-04 14:40:33
    今天我来说说自己关于JAVA抽象类和接口。 抽象类: 定义:有abstract修饰的类,我们称之为抽象类 如: abstract class Test{}; 。  方法:抽象类可以有具体方法抽象方法 。 抽象方法如: abstract void ...
  • Java抽象类接口的异同点

    千次阅读 2019-08-31 17:25:52
    抽象类接口相同点: 都可以定义抽象方法 都不可以被实例化 子类必须对所有的抽象方法提供具体实现,否则子类必须声明为抽象类 抽象类接口相同点: 接口中的方法必须是抽象的方法,抽象类可以存在非抽象方法 ...
  • Java接口和Java抽象类代表的是抽象类型,是我们需要提出的抽象层的具体表现。OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,必须是面向接口的编程,面向抽象的编程,正确地使用接口、...
  • 文章目录java接口为什么不能实例化呢?总结: java接口为什么不能实例化呢? 首先,我们需要明白实例化的含义。实例化实际意义是在jvm的堆中开辟出一块内存空间,比如Student s = new Student();此处声明Student...
  • java 抽象类和接口的区别

    千次阅读 2018-01-23 16:29:59
    很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。 在讨论它们之间的不同点之前,我们先看看抽象类接口各自的特性。...
  • JAVA抽象类和接口的联系与区别

    万次阅读 2018-08-15 20:35:32
    抽象类和接口的联系与区别 抽象类接口一直是面试中问到的一道比较基础的问题,弄懂它们之间的联系与区别,将会提升我们面向对象编程的功底。 联系 (1)抽象类和接口都不能被实例化。如果要实例化,则抽象...
  • java抽象类定义 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能...
  • 一、抽象类 一直不太理解为什么要使用抽象类,实际所有使用抽象类的实现都可以用普通类代替,昨晚突发奇想,把这块深入的啃一下。 看到一个很好的例子,由此例子做进一步剖析。比如公司有工程师,管理员。二者都有...
  • 浅析JAVA抽象类和接口的比较

    千次阅读 2014-04-15 15:39:30
    抽象类(abstract class)和接口(interface)是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。抽象类和接口之间在对于抽象类定义的支持方面具有很大的...
  • 关于抽象类 JDK 1.8以前,抽象类的方法默认访问权限为protected JDK 1.8时,抽象类的方法默认访问权限变为default 关于接口 JDK 1.8以前,接口中的方法必须是public的 JDK 1.8时,接口中的方法可以是public的,也...
  • 二、抽象类接口 三、小结 概念 抽象类和具体类是相对的概念。“抽象”是一种存在思想逻辑中的概念,而“具体”是一种可见可触摸的现实对象。简单说,比如“人”比“男人”抽象一点,“动物”又比“人”更抽象...
  • Java 抽象类和接口的相同点不同点

    千次阅读 2017-09-01 10:15:15
    抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。 抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 519,792
精华内容 207,916
关键字:

java抽象类和接口

java 订阅