Java抽象类,抽象方法和接口
作者:网络转载 发布时间:[ 2016/11/28 14:36:50 ] 推荐标签:测试开发技术 接口 抽象类
抽象类和抽象方法
在Java中用abstract修饰的类是抽象类,用abstract修饰的类的方法是抽象方法,抽象类和抽象方法用法总结如下。
1.abstract可以修饰class表示抽象类,可以修饰方法表示抽象方法,但是不能修饰成员变量,也是没有抽象的成员变量。
2.用abstract修饰的类中可以有abstract方法,也可以没有abstract方法;可以有非abstract方法,也可以没有非abstract方法。
3.只有abstract类中才能声明abstract方法,abstract方法不能声明在非abstract类中。
4.abstract类可以是外部类,也可以是内部类。abstract类如果是外部类,不能用private修饰;abstract类如果是内部类,可以用private修饰。
5.abstract方法不能有方法体,abstract方法必须对其子类可见,即不能用private修饰。
// abstract类中可以没有abstract方法,但有abstract方法的类必须定义为abstract类
abstract class C3 {
// abstract类中可以有成员变量,但成员变量不能用abstract修饰
private int mPara;
// abstract方法不能有方法体,abstract方法不能是private
public abstract void setPara(int para);
// 抽象类中可以有非抽象方法
public int getPara(){
return mPara;
}
}
6.abstract类可以继承自其他类,这个父类可以是abstract类,也可以是非abstract类。如果它继承自abstract类,它可以选择实现其父类中的abstract方法,也可以不实现。
7.abstract类可以实现一个接口。它可以选择实现接口中的接口方法,也可以不实现。
8.abstract类只有被继承时才有用,它的子类可以是abstract类,也可以是非abstract类。如果它的子类是abstract类,则会自动继承所有其所有的abstract方法,abstract子类中也可以定义新的abstract方法,如果它的子类是非abstract类,则子类必须实现其所有的abstract方法。
9.abstract类可以用来定义变量,但不能实例化,也是不能通过new来构造一个abstract类的对象。abstract类定义的变量可以被赋值为其非abstract子类的对象。
10.abstract类中可以有构造方法,抽象类的构造方法不能是抽象方法。
11.abstract类和abstract方法都不能用final修饰。
接口
在Java中用interface来定义一个接口,接口用法总结如下。
1.interface只能用来定义接口,不能用来修饰类,成员变量或成员方法。
2.interface中可以有成员变量,成员变量一定是public static final的,但允许在声明变量时仅指定部分修饰符。但即使没有添加public,static,final中任何一个修饰符,该变量仍然是public static final的。此外,由于final成员变量必须在定义时初始化,因此,接口类中定义的成员变量必须在定义时赋值。赋值可以用常量表达式,也可以用任意在该接口中能够访问的对象组成的表达式。例如:
private interface I1 {
//len是public static final的,len必须被初始化
int len = String.valueOf(new GregorianCalendar().getTimeInMillis()).length();
}
3.interface中的成员变量在实现该接口的类中可以直接使用,在没有实现该接口,但是可见该接口的类中可以通过“接口名.成员变量名”来访问。例如:用I1.len来访问上述例子中的接口中定义的len成员变量。
4.interface中可以有成员方法,成员方法都是public abstract的抽象方法,不能有方法体。允许声明成员方法时指定部分或不指定修饰符,但即使没有添加public abstract中任何一个修饰符,该成员方法仍然是public abstract的。
5.一个接口可以继承自其他接口。接口之间的继承用extends关键字,不能用implements。一个接口可以继承多个其他接口。多个接口之间用逗号分隔。例如:private interface I1 extends I2, I3{}
6.一个接口不能继承自任何类,包括抽象类。
7.一个非抽象类如果实现了某个接口,它必须要实现该接口中声明的所有的抽象方法。一个抽象类如果实现了某个接口,它可以实现该接口中声明的抽象方法,也可以不实现。
8.接口可以用来定义变量,但不能实例化,也是不能通过new来构造一个接口的对象。接口定义的变量可以被赋值为实现该接口的类的对象。
9.接口中没有构造方法。接口不能用final修饰。
10.接口中可以定义内部类和内部接口
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11