java编程abstract类和方法详解
2017-12-12 16:36
477 查看
抽象类和抽象方法常用知识点:
(1)抽象类作为被继承类,子类必须实现抽象类中的所有抽象方法,除非子类也为抽象类。
也就是说,如果子类也为抽象类,可以不实现父类中的抽象方法。但是,如果有一个非抽象类
继承于抽象子类,需要实现抽象子类,抽象子类的抽象父类的所有抽象方法,新帐旧账一起算。
(2)抽象类不能用final进行修饰。
(3)抽象类不能被实例化,也就是说你用的时候不能通过new关键字创建。
(4)抽象类中可以包含抽象方法和非抽象方法,抽象方法没有方法体,也就是没有具体实现,
只是定义了有什么功能,但是非抽象方法含有方法体。
eg:
抽象父类Person:
package com.lanhuigu.java; /** * 抽象类:不能用final修饰, * 可以包含抽象方法和非抽象方法, * 抽象方法没有方法体,只是定义功能,没有实现; * 非抽象方法为正常的方法。 */ public abstract class Person { /* * abstract methods */ public abstract String eat(); public abstract String sleep(); /* * non-abstract methods */ public String sport() { return "生命在于运动"; } }
非抽象子类Teacher:
package com.lanhuigu.java; /** * 继承于抽象类person,必须实现父类中的所有抽象方法 */ public class Teacher extends Person { @Override public String eat() { // TODO Auto-generated method stub return "老师吃饭"; } @Override public String sleep() { // TODO Auto-generated method stub return "老师睡觉"; } }
非抽象子类Student:
package com.lanhuigu.java; /** * 继承于抽象类person,必须实现父类中的所有抽象方法 */ public class Student extends Person { @Override public String eat() { // TODO Auto-generated method stub return "学生吃饭"; } @Override public String sleep() { // TODO Auto-generated method stub return "学生睡觉"; } }
抽象子类OthersPerson:
package com.lanhuigu.java; /** * 抽象类继承自抽象类,可以不用实现其父类的抽象方法 */ public abstract class OthersPerson extends Person { public abstract String call(); }
非抽象子类ExtendsOthersPerson继承于抽象子类OthersPerson:
package com.lanhuigu.java; /** * 必须实现抽象父类OthersPerson,以及OthersPerson父类Person中 * 的所有抽象方法,新帐旧账一起算。 */ public class ExtendsOthersPerson extends OthersPerson { @Override public String sleep() { // TODO Auto-generated method stub return "睡觉"; } @Override public String eat() { // TODO Auto-generated method stub return "吃饭"; } @Override public String call() { // TODO Auto-generated method stub return "打电话"; } }
测试代码:
package com.lanhuigu.java; public class TestAbstract { public static void main(String[] args) { Teacher teacher = new Teacher(); Student student = new Student(); //OthersPerson othersPerson = new OthersPerson();//报错,抽象类不能被实例化 System.out.println(teacher.eat()); System.out.println(teacher.sleep()); System.out.println(teacher.sport()); // 继承父类非抽象方法 System.out.println("=============="); System.out.println(student.eat()); System.out.println(student.sleep()); System.out.println(student.sport()); // 继承父类非抽象方法 } }
控制台输出:
老师吃饭
老师睡觉
生命在于运动
==============
学生吃饭
学生睡觉
生命在于运动
总结
以上就是本文关于java编程abstract类和方法详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:
如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- 线程方法详解及方法小例子
- Python中验证码破解方法详解
- Java8的HashMap详解(存储结构,功能实现,扩容优化,线程安全,遍历方法)
- C# foreach 实用方法详解
- (十三)Java工具类StringUtils中strip、stripStart、stripEnd剥离方法源码详解
- WinForm实现最小化到系统托盘方法实例详解
- (十三)Java工具类StringUtils中strip、stripStart、stripEnd剥离方法源码详解
- showModalDialog()、showModelessDialog()方法使用详解
- JSONObject使用方法详解
- 图像处理工具包ImagXpress打印图像方法详解
- 关于多线程常用方法以及对锁的控制(详解)
- 详解Java中的clone方法
- 九大Oracle性能优化基本方法详解
- NAT端口映射配图详解-外网访问代理服务器内部的实现方法
- JSONObject使用方法详解
- JavaScript中this关键字使用方法详解
- HTTP详解--HTTP方法(五)
- AJAX(XMLHttpRequest)进行跨域请求方法详解(一) 推荐
- Shell中建立与使用临时性文件的方法详解
- php根据分类合并数组的方法实例详解