java abstract修饰符
来源:互联网 发布:淘宝赚钱方法 编辑:程序博客网 时间:2024/04/24 02:01
abstract修饰符
- 用abstract修饰的类叫做抽象类,抽象类不能被实例化
- 用abstract修饰的方法叫做抽象方法,抽象方法没有方法体
抽象类的规则:
1、抽象类可以没有抽象方法,但有抽象方法的类必须是抽象类;
2、抽象类的子类没有重写实现父类的所有抽象方法(当然可以实现为空,即方法体为空),则子类必须被定义为抽象类;
abstract class Base{abstract void method1();abstract void method2();}class Sub extends Base{//编译出错,Sub类没有实现父类的所有抽象方法,必须被定义为抽象类void method1(){System.out.println("method1");}}
3、抽象类可以有构造方法,但不能是抽象构造方法;
abstract class Base{abstract void Base();//编译出错,构造方法不能是抽象的}
4、抽象类可以有静态方法,但是没有静态抽象方法;
abstract class Base{abstract void Base();//编译出错,构造方法不能是抽象的static abstract void method1(); //编译出错,不能有抽象静态方法static void method2(); //可以有静态方法}
5、抽象类和抽象方法不能被final修饰符修饰,因为抽象方法必须有子类实现,而final不允许有子类,不能被子类方法覆盖;abstract 与 final不能连用
为什么抽象类不允许被实例化?
1、在语义上
抽象类表示从一些具体类中抽象出来的类型,例如苹果类,香蕉类是具体类,水果类是抽象类。自然界并不存在水果类本身的实例。苹果对象是水果对象,香蕉对象也是水果对象。
- 当父类是具体类时,父类的对象包括父类本身的对象和所有子类的具体对象;
- 当父类是抽象类时,父类的对象包括所有具体子类的对象;
因此,所谓的不能被实例化,是指不能创建抽象类本身的实例。
2、在语法上
假如可以创建抽象类本身的实例,因为method2() 方法是抽象方法,没有方法体,所有无法执行。因此,java编译器不允许创建抽象类的实例。
abstract class Base{public void method1(){//普通方法 } public abstract void method2(); //抽象方法}Bsse base = new Base();//假使java编译器没报错base.method1();base.method2();//运行时java虚拟机无法执行这个方法
阅读全文
0 0
- Java abstract修饰符
- java修饰符:abstract
- Java abstract修饰符
- java abstract修饰符
- java修饰符五(abstract 修饰符)
- java修饰符(abstract 修饰符)
- JAVA中的abstract修饰符
- Java中的abstract,static,final修饰符
- Java中的abstract,static,final修饰符
- java中的修饰符static/final/abstract/
- Java修饰符static,final,abstract
- 【Java修饰符】(2)abstract修饰符详解
- abstract修饰符
- abstract修饰符浅析
- abstract修饰符
- abstract修饰符说明
- abstract修饰符
- abstract修饰符
- 关于java中关闭数据库链接的正确写法
- 钓鱼Wi-Fi搭建实践
- 芝麻信用分800+的技巧,get!
- 图像配准之《常用图像变换模型》简述
- OSI七层框架与TCP/IP四层框架
- java abstract修饰符
- java-面试题3
- 应用层传输协议
- 剑指Offer——(44)翻转单词顺序列
- 【视频开发】【Live555】live555实现h264码流RTSP传输
- yii2 验证码配置
- vim在.vimrc里配置快捷键
- IDL字符串常用处理函数
- Webstrom快捷键