抽象类
抽象类的概念
在面向对象的概念中,所有的对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类的实现
Java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。
这是一个父类
package Abstract;
/*
* 这是一个抽象类
*/
public abstract class abstrCacl {
protected abstract double add(double a,double b);
//只有方法,没有具体内容,需要有子类去完成。
//用protected abstract来修饰这个方法
protected abstract double minus(double a,double b);
protected abstract double mul(double a,double b);
protected abstract double pid(double a,double b);
/*
* 无参构造方法,抽象类虽然不能创建对象,但是可以有无参构造器
* 因为无参构造器是在对象初始化瞬间初始化属性,只要不产生对象,可以随意初始化。但接口不行。
*/
public abstrCacl() {
}
/*
* 计算器运行的具体程序
*/
public String run(String opt,double a,double b) {
String result ='0';
switch (opt) {
case '+':
result = add(a, b)+'';//将double型改成字符串类型
break;
case '-':
result =minus(a, b)+'';
break;
case 'x':
result =mul(a, b)+'';
break;
case '÷':
if(b==0) {
result='错误' ;
}else {
result =pid(a, b)+'';
}
break;
default:
break;
}
return result;
}
}
这是子类
package Abstract;
/*
* 这是子类
*/
public class abstractCaclDemo extends abstrCacl{
/*
* 方法的重写(必须)
*/
@Override
protected double add(double a, double b) {
return a+b;
}
@Override
protected double minus(double a, double b) {
return a-b;
}
@Override
protected double mul(double a, double b) {
return a*b;
}
@Override
protected double pid(double a, double b) {
return a/b;
}
}
计算器程序测试
package Abstract;
public class text {
public static void main(String[] args) {
abstrCacl ac =new abstractCaclDemo();//父类 +对象 = 子类类型是允许的
ac.run('+', 7, 8);
}
}
抽象类的特点
方法中有abstract为抽象类抽象类不能被实例化抽象类可以有构造方法抽象类可以继承非抽象类单继承实现接口抽象类中的方法都是抽象方法
接口
接口概念
接口是抽象方法的集合,接口通常用interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法
接口的实现
接口的实现和抽象类的实现几乎相同,不同点是接口类的关键字是interface,而不是abstract。接口方法默认为publicstaticfinal,因此接口中的属性是常数,无法改变。那么这样来说也就不能初始化,从而没有构造方法。
jdk8+接口升级
与抽象类不同的是,在jdk8中,我们可以在接口中使用default关键字,在default修饰的方法中可以写方法的实现。
接口的特点
接口中存储的数据是常量接口中的方法是抽象方法接口不能被实例化接口不能有构造方法接口可以继承多个接口
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点