JAVA-"abstract"与"接口(interface)"
来源:互联网 发布:梧桐一叶落而天下知秋 编辑:程序博客网 时间:2024/06/08 12:59
今天说一说抽象的(abstract)与接口(interface)
我要先告诉大家的是它的作用是可以修饰方法及抽象类的,
那么再说一说它的作用,大家可以想象一下,在子类与父类继承中,子类继承了父类,会发生重写的关系,
好比如,父类有一百元,那么继承他的子类也有一个钱的方法,但是每个人手中的钱是不一样的,
需要每一个子类重写,这样父类就没有了存在的意义了,但是恰恰相反,他的存在是起到了格式化的作用(可以理解为规范的作用)
比如!正常的我们是这样写
public void 类名(){
方法体;
}
但是我们要把它的方法体去掉!改为
public abstract void 类名();
我刚刚第二句就说了,abstract是可以修饰方法与抽象类的
它修饰的方法是没有方法体的,我们称它修饰的方法为抽象方法(别问我为什么?我也想知道为什么叫这名字。。。)
那么叫这名字就有它的独特之处了!这抽象方法是只能存在于抽象类中。
他的特殊之处还不止这些,
当某一个子类继承了抽象类(父类),那么这个类就必须重写抽象类中的所有抽象方法(有几个写几个)
但是也不是绝对的,抽象类中可以有抽象方法,也可以有普通方法
当然了如果碰见了一个父类有多个子类的,那么这就麻烦了,这时,有一个懒办法!!!
将子类也加上abstract,但是!!!谁继承了这个子类,那么对不起,
你要不写有多少个父类是abstract,你就重写几遍,要不就继续往下坑!!!
反正到最后你得写够有你的多少父类写了abstract,你就重写几遍,要不写?对不起!报错!!!
但是坑完了,对不起!接着出现问题!抽象类还不能被实例化(不能创建对象)!!!
抽象类存在的意义只是被子类继承,仅此而已!!!
然后该讲接口(interface)了
小心了,接口可是最像抽象类的哦!!!
接口是一个特殊的抽象类
接口中所有的方法都是抽象方法,并且接口中所有的方法都是默认使用public abstract修饰的
定义的格式:
public interface 接口名{ }
这个的类名是特别严谨和强势的,谁继承我的接口,那么他的方法名就得和这个一样!!!
那怎么写方法体?还写public void 加类名?
别忘咯我刚刚写的啥!
接口中所有的方法都是抽象方法
所以写方法体还是要写抽象方法的。
但是是不允许是私有的!必须是公共的抽象方法
当然了,其实不写abstract也是可以的,这就牵扯出了他的另一个特性!
接口中所有的方法都是默认使用public abstract修饰的!!!
接口中所有属性(变量)都是默认使用public static final修饰的,但必须给定初始值
同样,接口与上面一样,同样是不能被实例化的。
因为类与接口不是一种东西,所以,不能是继承关系,只能是实现关系!即类实现接口
直接在类名后面写implements 加父类名即可
这时候,类既然实现了该接口,那么就必须重写接口中的所有方法
类是同样多实现的,即一个类可以实现多个接口,接口之间使用,分割“,”
类是单继承,多实现的(一个类只能继承一个父类,但是可以实现多个接口)
接口之间是允许继承的,类与类是允许继承的,类与接口是实现
那如何实现又继承又实现?
可以先继承后实现
最后,还是那句,新手上路,请多包涵!!!
- JAVA-"abstract"与"接口(interface)"
- Java Abstract与Interface
- java 接口(Interface)与 抽象类(abstract class)
- java 接口(Interface)与 抽象类(abstract class)
- Java学习——abstract抽象类与interface接口
- java学习笔记-抽象类abstract与接口interface
- Java抽象类abstract class与接口interface
- java中的抽象类 abstract与接口interface
- Java中接口interface与抽象类abstract
- java中abstract与interface
- java中的abstract与interface
- java abstract与interface解析
- 抽象类(abstract)与接口(interface)
- abstract抽象类与interface接口区别
- Abstract&Interface 抽象类与接口
- Java Abstract class( 抽象类 ) && Interface( 接口 )
- abstract,以及abstract抽象类与interface接口的区别
- java中abstract class 与 interface (抽象类与接口)的区别
- hdoj 2844 Coins(多重背包)
- Oracle数据库的表空间
- 7.C语言(5)
- 分别显示用float和double指数记数法所能表示的最大值和最小值 以一个最高有效位为1的二进制数字开始,用有符号右移操作符对其进行右移,直至所有二进制位都被移除为止,每移一位都要使用Integer
- Handler图片自动轮播
- JAVA-"abstract"与"接口(interface)"
- C++ 二叉树建立,遍历
- android 倒计时控件布局
- ValueError: invalid literal for int() with base 10: '7.8000000e+02'
- Android 第三方登录
- 7.ES6 变量的解构赋值 (Destructuring)
- MVP+RxJava+Retryfit+RecyclerView多条目展示
- 缺少的字符串-LintCode
- C++/C++11中命名空间(namespace)的使用