ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

抽象类接口

2021-01-18 23:30:37  阅读:114  来源: 互联网

标签:实现 子类 接口 抽象 抽象类 方法


抽象类 abstract

**可以规范子类的实现**
①、用abstract修饰的方法叫抽象方法。
		注:抽象方法不能有方法体。
②、用abstract修饰的类叫抽象类
		public abstract class{}
③、抽象类的构造方法,存在是为了让子类继承本类属性和方法
④、不能修饰:构造方法、final方法、static方法、private方法

注:

①、含有抽象方法的类 必须定义为抽象类,但抽象类可以没有抽象方法
②、子类继承父类必须实现父类中的所有抽象方法(重写),否则子类也必须定义为抽象类
③、抽象类不能被实例化
		(写一个类继承方法,以免调用到抽象方法无法执行抽象方法的方法体 而报错)

接口

都是抽象方法
	class  类
	 *   interface  接口    (只有抽象方法和静态常量)
	 *   		抽象方法
	 *   		公共静态常量
	 
接口中的静态方法 , 只能由  接口名字调用
一个类只能继承一个父类(单继承),但它可以同时实现多个接口 implements连接
要先继承 再实现

如果只实现了一个 接口 有默认方法, 不需要重写
如果同时实现了两个接口, 中有同名同参数的默认方法, 必须重写
可以通过 接口名字.super.方法名字() 调用指定接口中的方法
如果就是想要自己的逻辑 可以将提供好的 接口名字.super.方法名字() 删掉,写自己逻辑就可以了

抽象类和接口的区别

抽象类使用abstract,接口使用interface
抽象类和接口都不能实例化

1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量!!!!!!!(注意重点在 普通 即 非静态  和  变量!!!!)
3.抽象类中可以包含抽象方法,也可以不包含,接口中只能包含抽象方法和静态常量,jdk1.8之后接口可以包含静态方法和默认方法。
4.抽象类和接口中都可以包含静态成员变量(static),抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
5. 一个类可以实现多个接口,但只能继承一个抽象类。
6. 抽象类: 创建对象是没有意义的, 不用创建
	接口 : 拓展功能
    抽象方法:规范子类的实现 

功能:

 1>抽象类一般用来表示同类事物,接口可以表示不是同类事物。

 2>抽象类可以实现代码的重用,也可以约束子类的功能。接口就是约束实现类的功能,降低代码之间的耦合性。

使用场景:

子类继承抽象类就不能再继承其他类(java的单继承原则),所以有抽象方法时优先使用接口定义
如果所有方法都没有实现,优先使用接口.
一些方法已经可以实现,而另一些方法无法或不想实现时,且继承(实现)关系很简单时,考虑用抽象类定义,留给后代去实现。jdk8之后,也可以在接口中定义default方法或static方法来实现.

默认方法 : 允许存在方法体

1. 默认方法和静态方法的对比
  		存在默认方法和静态方法, 简化实现类的实现 
  		
  		1. 静态方法 只能由接口名字调用, 不允许重写, 在所有实现类都满足功能的时候, 静态方法, 可以减少实现类创建对象的过程
  		2. 默认方法: 总有一些特殊的实现类,方法体不同, 需要重写, 只能考虑默认方法
	public default void tongdian(){
			System.out.println("zif");
		}

标签:实现,子类,接口,抽象,抽象类,方法
来源: https://blog.csdn.net/weixin_51023834/article/details/112759985

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有