Java 抽象类,抽象方法和接口
2015-03-26 20:50
155 查看
抽象类和抽象方法
在Java中用abstract修饰的类是抽象类,用abstract修饰的类的方法是抽象方法,抽象类和抽象方法用法总结如下。1、abstract可以修饰class表示抽象类,可以修饰方法名表示抽象方法,但是不能修饰成员变量,也就是没有抽象的成员变量。
2、一个抽象类中可以有成员变量和成员方法。成员方法可以有抽象方法也可以有非抽象方法。
3、抽象类可以是内部类,抽象内部类可以用private修饰。
4、抽象类中的抽象方法不能有方法体。一个抽象方法必须对其子类可见,即不能用private修饰。如果一个类中有抽象方法,那么类必须定义为抽象类。例如:
[code]//抽象类中可以没有抽象方法,但有抽象方法的类必须定义为抽象类 abstract class C3 { //抽象类中可以有成员变量,成员变量不能用abstract修饰 private int mPara; //抽象方法不能有方法体,抽象方法不能是private public abstract void setPara(int para); //抽象类中可以有非抽象方法 public int getPara(){ return mPara; } }
5、一个抽象类可以继承自其他类,这个类可以是抽象类,也可以是非抽象类。如果它继承自抽象类,它可以选择实现抽象父类中的某个或某些抽象方法,也可以不实现,将实现父类的抽象方法的任务交给它的子类。
6、一个抽象类可以实现一个接口。它可以选择实现接口中的某个或某些接口方法,也可以不实现,将实现接口方法的任务交给它的子类。
7、抽象类只有被继承才有用,它的子类可以是抽象类,也可以是非抽象类。如果它的子类是非抽象类,则子类必须实现其所有的抽象方法。如果子类是抽象类,则会自动继承所有其所有的抽象方法,抽象子类中也可以定义新的抽象方法,该子类的某个非抽象子类必须实现所有的抽象方法。
8、抽象类可以用来定义变量,但不能构造对象,可以用抽象类定义的变量指向非抽象类子类的对象。
9、抽象类中可以有构造方法,但构造方法只能由其子类构造方法调用。抽象类的构造方法不能是抽象方法。
10、抽象类和抽象方法都不能用final修饰。
接口
在Java中用interface来定义一个接口,接口用法总结如下。1、interface关键字只能用来定义接口,不能用来修饰类,成员变量或成员方法。
2、一个接口类中可以有成员变量和成员方法,也可以定义内部类或内部接口。
3、接口类中的成员变量一定是public static final的,但允许在声明变量时仅指定部分修饰符。但即使没有添加public,static,final中任何一个修饰符,该变量仍然是public static final的。此外,由于final成员变量必须在定义时初始化,因此,接口类中定义的成员变量必须在定义时赋值。赋值可以用常量表达式,也可以用任意在该接口中能够访问的对象组成的表达式。例如:
[code]private interface I1 { //len是public static final的,len必须被初始化 int len = String.valueOf(new GregorianCalendar().getTimeInMillis()).length(); }
4、接口类中的成员变量在实现该接口的类中可以直接使用,在没有实现该接口,但是可见该接口的类中可以通过“接口名.成员变量名”来访问。例如:用I1.len来访问上述例子中的接口中定义的len成员变量。
5、接口类中的成员方法除了static成员方法外,都是public abstract的抽象方法,不能有方法体。允许声明成员方法时指定部分或不指定修饰符,但即使没有添加public abstract中任何一个修饰符,该成员方法仍然是public abstract的。static成员方法必须有方法体。接口中只有static方法有方法体,因此,接口中不能使用this和super关键字。
6、一个接口可以继承自其他接口。接口之间的继承用extends关键字,不能用implements。一个接口可以继承多个其他接口。多个接口之间用逗号分隔。例如:private interface I1 extends I2, I3{}。
7、一个接口不能继承自任何类,包括抽象类。
8、一个非抽象类如果实现了某个接口,它必须要实现该接口中声明的所有的抽象方法(接口中除了static方法外都是抽象方法)。一个抽象类如果实现了某个接口,它可以实现该接口中声明的抽象方法,也可以将实现接口方法的任务交给它的子类。
9、接口可以用来定义变量,但不能构造对象,可以用接口定义的变量指向实现该接口的类的对象。
10、接口没有构造函数。接口不能用final修饰。
相关文章推荐
- 初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)
- Java中关于抽象类抽象方法以及接口的总结
- java基础回顾----抽象类和抽象方法,接口
- 学JAVA必须知道:抽象类与接口的区别
- 详细解析Java中抽象类和接口的区别
- java面向对象浅析系列2——抽象类、接口与多继承
- java里抽象类和接口的区别
- Java Q&A: 抽象类和接口 - 实战练习
- 详细解析Java中抽象类和接口的区别(来自:java060515) (转)
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- 详细解析Java中抽象类和接口的区别(来自:java060515)
- java里抽象类和接口的区别
- java中接口和抽象类的应用[原创]
- java的抽象类和接口分析(转贴自山哥的专栏)
- JAVA中几个易混淆关键词的理解:行为,隐藏,组合和继承,覆写和重载,多形(多态)性,动态绑定,上溯造型,抽象类,接口
- 详细解析Java中抽象类和接口的区别(来自:java060515)
- Java 接口大全、面向接口编程、什么时候使用接口。选择Java接口还是抽象类
- java 的抽象类与接口
- Java中抽象类与接口的区别
- java 中的抽象类和接口!