接口与抽象的应用
抽象
- 从语法层面进行要求子类语法覆盖
- 如果一个类包含抽象方法那么这个类就是抽象类
- 继承抽象类的子类强制要求重写父类抽象方法
- 关键字 abstract
抽象类不能被new
public abstract class A{
public abstract void fun();
}
public class B{
public void fun(){
System.out.println("6");
}
}
class C{
public static void main(String [] arge){
A a=new A();//报错不能被new定义抽象类
A a1=new B();//可以
}
}
用法
[修饰符] abstract class 类名{
abstract 数据类型 方法名();
}
父类
public abstract class Shape {
String color;
String shapeinfo;
abstract double computeArea();//抽象类通过子类的重写调用
public void displayinfo() {
System.out.println("形状:"+shapeinfo);
System.out.println("颜色:"+color);
System.out.println("面积:"+computeArea());//调用子类重写了的抽象类
}
}
子类
public class Circle extends Shape {
double r;
public double computeArea(){//强制重写父类方法computeArea
double PI=3.1415926;
return r*r*PI;
}
}
测试类
public class ShapeTest {
public static void main(String[] args) {
Circle circle=new Circle();
circle.color="red";
circle.shapeinfo="circle";
circle.r=2;
circle.displayinfo();//直接使用父类的方法
}
}
接口
1、接口是特殊的类:
特殊1:接口中的方法全部都是抽象的(可以省略abstract关键字)
特殊2:接口中的成员变量必须是static final的(静态常量)
无论是否写static final 都是静态常量(没有地方改动成员变量的值)
2、接口中方法都是抽象方法,没有方法,不能修改成员变量的值
3、接口不能进行实例化(不能放在new 后面),所以成员变量的值不可能是哪一个对象的,它必须是整个接口的(即为static)
扫描二维码关注公众号,回复:
11210577 查看本文章
4、这个特殊的类有自己的关键字:public interface 接口名
5、继承接口用:public class 接口实现类 implements 接口名
6、接口实现类需要将所有抽象方法重写
定义
public interface A{
// ^--此处不再不用class定义了
public void fun1();
public void fum2();
}
继承/实现抽象类
public class B implements A{
public void fun1(){
System.out.println();
}
public void fun1(){
System.out.println();
}
}
Java中不能实现多重继承,但是可以实现多个接口
public class C implements A,B{
//重写A,B中所有的抽象方法
}
接口可以有继承(接口继承接口)
public interface B extends A{
//B接口继承了A接口
//那么实现B接口的类同样也要重写A,B所有的抽象方法
}