Java抽象类
原创约 840 字大约 3 分钟...
105-Java抽象类.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
- 抽象类和抽象方法的概念
- 抽象类是抽象方法和非抽象方法的集合
[访问权限修饰符] abstract class 类名 {
……
}
- 特殊情况
- 全部是抽象方法
- 全部为非抽象方法
abtract class A {
String name;
abstract int method1(int a, int b);
void sayHi( ){
System.out.println(“Hello!”);
}
- 抽象方法
- 只有方法声明,没有方法实现的方法
[访问权限修饰符] abstract 返回值类型 抽象方法名 (参数列表) ;
abstract class A {
abstract int method1(int a, int b);
}
- 抽象类的规则
- 注意:
- 抽象类不能被实例化;
- 其包含的抽象方法必须在其子类中被实现,否则该子类只能声明为abstract;
- 抽象方法不能为static;
- 在下列情况下,一个类必须声明为抽象类:
- 当一个类的一个或多个方法是抽象方法时;
- 当类是一个抽象类的子类,并且没有实现父类的所有抽象方法,即只实现部分;
- 当一个类实现一个接口,并且不能为全部抽象方法都提供实现时;
- 注意:
给定以下代码:
public abstract class Test{
public abstract void methodA();
public abstract void methodB(){
System.out.println("Hello");
}
}
执行下列哪些操作后,可以让代码通过编译?
A.对methodA方法添加方法体
B.将5~7行,用“;”代替
C.删除class前的abstract关键字
D.删除methodA方法前的abstract关键字
E.删除methodB方法前的abstract关键字
答案:BE
示例代码
package 抽象类;
/**
* OrderDao对Order进行增删改查(CRUD)的方法
* <p>Title: OrderDao</p>
* <p>Description: </p>
* @author xianxian
* @date 2019年7月6日
*/
public abstract class OrderDao {//abstract抽象
/**
* 1.抽象类中可以没有抽象方法
*
* 2.如果一个类中有抽象方法,那么这个类必须是抽象类
*
* 3.如果子类没有实现该抽象方法,那么子类也必须声明为抽象类
*
* 4.
*/
public abstract void getOrder();
}
package 抽象类;
public abstract class OrderDaoImp1 extends OrderDao {
// @Override
// public void getOrder() {
//
// }
}
package 抽象类;
public class OrderDaoImp2 extends OrderDao {
@Override
public void getOrder() {
}
}
package 抽象类;
public class OrderSunzi extends OrderDaoImp1 {
@Override
public void getOrder() {
System.out.println("getOrder()。。。。");
}
}
package 抽象类;
public class StudentImp implements StudentInterface {
/**
* 一个类如果实现接口必须实现接口里的所有方法
* 如果一个类里有未实 现接口的方法那么只有abstract
*
* 加咯abstract会带来一个新的问题
* 这个类是不能被实例化的,除非它再生一个子类
*/
@Override
public void addStudent() {
// TODO Auto-generated method stub
}
@Override
public void deleteStudent() {
// TODO Auto-generated method stub
}
@Override
public void updateStudent() {
// TODO Auto-generated method stub
}
}
package 抽象类;
public interface StudentInterface {
public void addStudent();
public void deleteStudent();
public void updateStudent();
}
package 抽象类;
public class Test {
public static void main(String[] args) {
//抽象类不被实例化
//OrderDao dao = new OrderDao();
//若非要实例化,那么可以实例化其子类
// OrderDao dao1 = new OrderDaoImp1();
OrderDao dao1 = new OrderSunzi();
OrderDao dao2 = new OrderDaoImp2();
}
}
分割线
相关信息
以上就是我关于 Java抽象类 知识点的整理与总结的全部内容,另附源码
Powered by Waline v2.15.4