java编程abstract类和方法详解
抽象类和抽象方法常用知识点:
(1)抽象类作为被继承类,子类必须实现抽象类中的所有抽象方法,除非子类也为抽象类。
也就是说,如果子类也为抽象类,可以不实现父类中的抽象方法。但是,如果有一个非抽象类
继承于抽象子类,需要实现抽象子类,抽象子类的抽象父类的所有抽象方法,新帐旧账一起算。
(2)抽象类不能用final进行修饰。
(3)抽象类不能被实例化,也就是说你用的时候不能通过new关键字创建。
(4)抽象类中可以包含抽象方法和非抽象方法,抽象方法没有方法体,也就是没有具体实现,
只是定义了有什么功能,但是非抽象方法含有方法体。
eg:
抽象父类Person:
packagecom.lanhuigu.java;
/**
*抽象类:不能用final修饰,
*可以包含抽象方法和非抽象方法,
*抽象方法没有方法体,只是定义功能,没有实现;
*非抽象方法为正常的方法。
*/
publicabstractclassPerson{
/*
*abstractmethods
*/
publicabstractStringeat();
publicabstractStringsleep();
/*
*non-abstractmethods
*/
publicStringsport(){
return"生命在于运动";
}
}
非抽象子类Teacher:
packagecom.lanhuigu.java;
/**
*继承于抽象类person,必须实现父类中的所有抽象方法
*/
publicclassTeacherextendsPerson{
@Override
publicStringeat(){
//TODOAuto-generatedmethodstub
return"老师吃饭";
}
@Override
publicStringsleep(){
//TODOAuto-generatedmethodstub
return"老师睡觉";
}
}
非抽象子类Student:
packagecom.lanhuigu.java;
/**
*继承于抽象类person,必须实现父类中的所有抽象方法
*/
publicclassStudentextendsPerson{
@Override
publicStringeat(){
//TODOAuto-generatedmethodstub
return"学生吃饭";
}
@Override
publicStringsleep(){
//TODOAuto-generatedmethodstub
return"学生睡觉";
}
}
抽象子类OthersPerson:
packagecom.lanhuigu.java;
/**
*抽象类继承自抽象类,可以不用实现其父类的抽象方法
*/
publicabstractclassOthersPersonextendsPerson{
publicabstractStringcall();
}
非抽象子类ExtendsOthersPerson继承于抽象子类OthersPerson:
packagecom.lanhuigu.java;
/**
*必须实现抽象父类OthersPerson,以及OthersPerson父类Person中
*的所有抽象方法,新帐旧账一起算。
*/
publicclassExtendsOthersPersonextendsOthersPerson{
@Override
publicStringsleep(){
//TODOAuto-generatedmethodstub
return"睡觉";
}
@Override
publicStringeat(){
//TODOAuto-generatedmethodstub
return"吃饭";
}
@Override
publicStringcall(){
//TODOAuto-generatedmethodstub
return"打电话";
}
}
测试代码:
packagecom.lanhuigu.java;
publicclassTestAbstract{
publicstaticvoidmain(String[]args){
Teacherteacher=newTeacher();
Studentstudent=newStudent();
//OthersPersonothersPerson=newOthersPerson();//报错,抽象类不能被实例化
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类和方法详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:
java中staticclass静态类详解
Java压缩文件工具类ZipUtil使用方法代码示例
Java编程关于子类重写父类方法问题的理解
如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!