java的抽象以及接口知识点

本文详细阐述了抽象类与接口的区别,包括它们的应用场景、特点及实现方式等,并解释了为何某些类不适合实例化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象类和接口的区别:

抽象类:代表的是对根源的抽象,例如:男人/女人 的类都是  “人类”,所以子类只能继承一个抽象类,正如:男人和女人只能是“人类” 不能再是 “动物类”

接口:代表的是对动作的抽象,例如  吃东西、睡觉等等,所以接口可以被多继承,一个子类可以实现多个接口

1.抽象类要被子类继承,接口要被类实现。

2.接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。




1.java的抽象类,抽象方法


为什么实例化pet没有意义:


   在现实中对有些类实例化对象没有意义,也就是代表这个类下面包含了多种情况,现实中这个类没有类对应的对象,是因为这个对象是个笼统的对象,是众多具体实际对象的集合,(这个时候我们使用这个类的主要内容就是使用多态,编写不同对象的不同的行为,因此这个主类在多态的过程中是不需要进行任何的修改的)这个时候我们就会将这个类添加“abstract”关键字,限制这个类进行实例化,这种类我们称作“抽象类”

2.抽象类与抽象方法关系:

   抽象方法没有方法体,必须放在抽象类中;同时在继承中,抽象方法必须在子类中进行实现,除非子类是抽象类。

3.抽象类中的普通方法和抽象方法在继承类中的使用:


从该图片中可以看出来,普通方法就是可以直接使用即可(继承给了子类),创建子类对象即可创建


      接口的知识点

3.如果一个抽象类中全部都是抽象方法,我们可以使用接口来代替这样的抽象类,因为接口比抽象类有很多的好处:1.可以被多继承    2.设计和实现完全分离    3.更自然的使用多态     4.更容易搭建程序框架    5.更容易更换实现。。。

4.接口的特点:接口一定不可以被实例化;一个类如果实现接口,则必须实现这个接口中的所有的抽象方法,除非这个类是抽象类;一个类可以实现多个接口;接口中的变量就是静态常量  (public  static  final)首先,接口是被各个子类实现的,但是不能通过实例化,建立对象来使用,因此接口中的常量必须是public,可以被其他类进行访问;其次 由于静态变量与静态方法不能实现父类引用指向子类对象的多态的功能,由此接口中的变量需要是静态变量(因为接口在多态中通常是代表父类,其定义的静态变量相当于是整个类中所有的子类都具有的属性,不需要子类进行重写)但是接口中的抽象方法不能是static,因为静态方法不能实现父类引用指向子类对象的多态的功能,不可以实现多态的功能,因此抽象方法不可以是静态的。  最后  由于接口是抽象的高级,接口主要是体现的是对开闭原则的一种体现,对修改关闭,对拓展开放

5.接口中没有构造函数,只有抽象方法和静态常量  

6.接口的继承与实现:

 因为类不可以多继承,所以我们发明了接口,但是为了区别接口和类,我们将类继承接口的形式叫做实现,这个时候接口也可以继承接口,也可以多继承(因为接口中方法没有方法体,不会出现“子类”不知道实现哪一个父类的方法--假设两个父类有同样的方法名、参数,只是方法体不同)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值