欢迎大家来到IT世界,在知识的湖畔探索吧!
文章概述
本文中小编为大家介绍了Java中abstract的概述 , 以及大家在实际开发中对抽象修饰方法和抽象修饰类的深层次的理解 。 并且针对抽象在实际开发中的使用总结处理一些问题 , 并作出了解答和问题解析。
Java中的抽象—abstract
当多个子类中有名称一致当但是细节不同的行为时 , 将 这个行为向上提取到父类中,提取时 , 只提取方法定义, 不提取方法主体 , 这种方法叫抽象方法,抽象方法所在的类也必须是抽象类。
抽象方法和抽象类都用abstract修饰 。
抽象类不能实例化 。 原因: 如果通过抽象类的对象直接调用没有方法实体的抽象方法没有意义 。
抽象类是有构造函数的 。 理解: 类都是有构造函数的 。 抽象类不能实例化 ,只是程序员不能在java中实例化抽象类 ,抽象类的实例对象在java底层由c语言创建 。
抽象类中可以有实体函数 。 理解: 抽象类与普通类的区别 :1. 抽象类中可以有抽象方法 。2. 抽象类必须用abstract修饰 3. 抽象类不能在java代码中实例化对象 。 除此之外没有 区别 。
抽象方法在调用之前必然会被重写。 理解: 抽象类被继承后子类必须重写抽象类中的抽象方法 , 或者把子类也声明抽象类 。
抽象类的构造方法可以私有化 。 理解: 构造函数私有化之后, 其他外部类不能继承该类 , 但是该类的内部类仍然可以使用构造方法去继承 。
抽象方法可以被重载 。 理解: 重载只关心方法的方法名一致 , 参数列表不同 。 与修饰符无关 。
一般类中不能写出现抽象方法。理解: 抽象方法所在的类也必须是抽象类
Java中abstract在面试时的一些问题:
1. 抽象类不能创建对象,抽象类有构造函数么?
解: 有
所有的类都有构造函数。
2. 抽象方法可以用final修饰么?
解: 不可以
final修饰方法后 , 该方法可以被继承 , 可以被重载 , 但是不能被重写 , 而不被重写的抽象方法是没有意义的。
3. 抽象类中可以定义静态方法么?
解: 可以
抽象类与普通类的区别 :1. 抽象类中可以有抽象方法 。2. 抽象类必须用abstract修饰 3. 抽象类不能在java代码中实例化对象 。 除此之外没有 区别 。
4. 抽象方法之间可以重载么?
解: 可以
抽象类与普通类的区别 :1. 抽象类中可以有抽象方法 。2. 抽象类必须用abstract修饰 3. 抽象类不能在java代码中实例化对象 。 除此之外没有 区别 。
5. 抽象方法可以用static修饰么?
解: 不可以
抽象方法需要被子类重写后实现具体功能,但是静态方法不能被重写。被static修饰后 , 意味着这个抽象方法可以跳过被重写被直接调用 , 而没有方法实体的方法执行本身是没有意义的, Java不允许废话的存在。
6. 抽象方法可以使用默认的修饰符么?
解:可以
抽象类中 修饰符默认 default 只有同包子类可以继承这个抽象类。
7. 抽象方法可以用private修饰么?
解: 不可以
抽象方法需要子类重写后实现具体功能,修饰符设为私有后不能被重写。
8. 子类在继承父类的时候,什么 东西无法被继承?
解: 构造方法、所有私有的东西、代码块
9. 抽象类能被final修饰么?
解: 不能
抽象类需要被子类继承后实现其中的方法,但抽象类被final修饰后为最终类不能被继承。矛盾。
总结 : 抽象类中不能有private 、 final关键字 , 抽象方法不能是static修饰的 。
后记
感谢各位客官的阅读 , 如果文章中错误或是剖析的不够透彻的地方还请您能够不吝赐教及时的在评论中告诉小编 , 以便小编能够及时的做出调整 , 提升文章质量。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/35569.html