java抽象类,接口总结
来源:互联网 发布:java log文件解析入库 编辑:程序博客网 时间:2024/06/05 10:45
抽象类
当多个类中出现相同功能,但是功能主体不同,
这时可以进行向上抽取,只抽取功能定义,而不抽取主体。
关键字abstract定义抽象类
抽象类特点:
1,抽象方法一定定义在抽象类中。
2,抽象方法和抽象类必须被abstract修饰
3,抽象类不可以被new用来创建对象,因为调用抽象方法没意义。
4,抽象类中的方法要被调用,必须由子类复写起所有抽象方法后,
建立子类对象调用,如果子类对象只复盖部分抽象方法,
那么该子类还是一个抽象类。
一般类和抽象类有什么异同呢?
1,相同之处:
2,不同之处:
特殊:
1,抽象类中可以不定义抽象方法,
这样做仅仅是不让该类建立对象。
2,抽象类中有构造函数,给子类对象提供初始化动作的。
3,抽象关键字不能和final.private,static关键字共存。
例子:
//定义一个抽象类
abstract class Student
{
abstract void Study();//不用写{}
}
//定义BaseStudenr类继承Student类
class BaseStudenr extends Student
{
//复写Study方法
void Study()
{
System.out.println("base study");
}
}
//定义AdvStudenr类继承Student类
class AdvStudent extends Student
{
//复写Study方法
void Study()
{
System.out.println("adv study");
}
}
class StudentDemo
{
public static void main(String[] args)
{
//实例对象
BaseStudenr c1=new BaseStudenr();
c1.Study();//调用方法
//实例对象
AdvStudent c2=new AdvStudent();
c2.Study();//调用方法
}
}
接口
初期理解可以认为是特殊的抽象类,当抽象类中的方法都是抽象的
,那么该类可以通过接口的形式来表示
interface可以用于定义接口
接口定义时,格式特点:
1,接口常见定义:常量,抽象方法。
2,接口中成员都有固定修饰符
常量:public static final
方法:public abstract
接口中成员都是public的。
注意点:
1,接口不可以创建对象,因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全部覆盖后,
子类才可以实现例化。否则子类是一个抽象类。
2,接口可以被类多实现,也是对多继承不支持的转换形式。
java支持多实现(implements)。
接口的特点:
1,接口是对外暴露的原则
2,接口是程序的功能扩展
3,接口可以用来多实现
4,类与接口之间是实现关系,而且类可以
继承一个类的同时实现多个接口
5,接口与接口之间可以有继承关系
抽象类和接口的区别:
1.抽象类 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个接口。
2.在抽象类 中可以有自己的数据成员,也可以有非抽象的成员方法,而在i接口中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 接口中一般不定义数据成员),所有的成员方法都是抽象的。
3.抽象类和接口所反映出的设计理念不同。其实抽象类表示的是"is-a"关系,i接口表示的是"like-a"关系。
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public,abstract 类型的。
- java抽象类,接口总结
- java接口抽象类总结
- java抽象类和接口总结
- java笔记 抽象类和接口总结
- java中抽象类和接口总结
- Java接口和抽象类用法总结
- Java 抽象类与接口总结
- Java知识总结-抽象类和接口
- Java接口和抽象类用法总结
- JAVA中抽象类,接口 总结
- java抽象类与接口区别总结
- Java接口和抽象类用法总结
- Java接口和抽象类用法总结
- java知识点总结:接口和抽象类
- java之抽象类和接口总结
- Java接口和抽象类用法总结
- Java接口和抽象类用法总结
- Java抽象类与接口的总结
- oracle的存储过程示例
- js实现切换图片
- offsetWidth,offsetHeight,offsetLeft,offsetTop相关的小实验
- Linux查看cpu个数
- 扩展RBAC用户角色权限设计方案
- java抽象类,接口总结
- Disruptor学习----综述
- cloud foundry之router源码分析
- 颜色与十六进制值的互转
- iReport_3.7.6安装配置
- IBM websphere Message Broker 学习笔记 - 命令
- 长SQL语句
- Linux系统下如何查看物理内存占用率
- Android ViewPager分页功能