抽象类、最终类和接口
来源:互联网 发布:微课录制软件下载 编辑:程序博客网 时间:2024/05/16 14:27
1.抽象类(abstract class)
抽象类:如果一个类中包含抽象方法,那么这个类就是抽象类。
通过把类或者类中的某些方法声明为abstract来表示一个类是抽象类;
抽象类不能够被实例化;(实例化必须加载类,因为不知道抽象方法的方法体,所以不能被实例化)
抽象类的子类需要实现父类中的所有的抽象方法,否则该子类也需声明为抽象类;
抽象类可以实现接口;
抽象类可以继承具体类;
抽象类也可以有main()方法;
构造方法和static方法不能声明为抽象的;
抽象类中可以具有指向子类对象的对象引用。
可以有构造方法
示例代码:
package Test_9;//基类声明为抽象类abstract class Base{ //抽象类中可以有其他方法 public void method() { System.out.println("Base"); } //抽象方法没有方法体{} abstract public void Test();//}//子类class Son extends Base{ //子类实现父类的抽象方法 @Override public void Test() { // TODO Auto-generated method stub }}public class Test{ public static void main(String[] args) { //Base base1 = new Base();编译出错,抽象类Base不能够被实例化 Base base = new Son(); base.method(); }}
2.接口(Interface)
定义:某个事物对外提供一些功能的生明。
接口也是实现了多态,同时接口也弥补了Java单继承的弱点;
使用接口声明方法和常量,接口中的方法只能是声明,没有具体的实现;
接口中的成员变量默认是:public static final;而且必须赋初值;
接口中的方法默认是:public static
不能有构造方法
package Test_9;interface MyInterface{ int i = 1;//必须赋初值 void add();}//demo类实现接口 MyInterface,如果有多个接口被实现用逗号隔开class Demo implements MyInterface{ //实现接口的方法 @Override public void add() { System.out.println(i); }}public class Test{ public static void main(String[] args) { Demo demo = new Demo(); demo.add(); }}
package test11;/** * 接口可以继承(或扩展)多个接口 * @author msi * */interface A{}interface B{}interface C{}//接口不可以实现接口interface D implements A{//编译出错}//,接口与接口之间的关系为继承,既可以单继承,也可以多继承。interface E extends A,B,C{}public class interfaceTest {}
3.最终类
- 加上final修饰的类就是最终类;
- 加上final的方法就是最终方法;
- 最终类中可以有最终方法也可以没有(抽象类中可以有抽象方法也可以没有);
- 最终类不能被继承;最终方法不能被重写。
阅读全文
0 0
- 抽象类、最终类和接口
- 抽象类和最终类(被final修饰的类)、接口的区别
- 抽象接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 最简单的BFS入门题目——迷宫的最短路径
- Golang
- java设计模式(十)——组合模式(Composite)
- 使用Yeelink点亮一个LED
- 《MFQ&PPDCS》学习心得--TCO(测试覆盖大纲)
- 抽象类、最终类和接口
- 精通棋牌游戏开发
- web.xml 中spring-servlet.xml 和 application.xml 配置位置及含义
- cURL error 56: Rev failure: Connection was reset (see http://curl.haxx.se/libcurl/c/libcurl-errors.h
- POJ 2429 GCD & LCM Inverse(Pollard-rho 大整数分解+DFS)
- Construct2小游戏开发经验
- thinkphp5的入门学习(2)不同数据添加的规则
- 深度学习进阶(二)--神经网络结构算法以及梯度下降法
- RecyclerView的理解