多平台统一管理软件接口,如何实现多平台统一管理软件接口
325
2022-08-06
Java超详细介绍抽象类与接口的使用(Java抽象类和接口的定义)
目录1.抽象类的语法和特性1.1语法1.2特性2.接口的语法和使用2.1语法2.2特性
1.抽象类的语法和特性
1.1语法
1.在java中,一个类如果被abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。
// 抽象类:被abstract修饰的类
public abstract class Shape {
// 抽象方法:被abstract修饰的方法,没有方法体
abstract public void draw();
abstract void calcArea();
// 抽象类也是类,也可以增加普通方法和属性,也可以包含构造方法
public double getArea() {
return area;
}
protected double area; // 面积
}
1.2特性
1. 抽象类不能直接实例化对象
Shape shape = new Shape();
// 编译出错 -> 抽象类不能被实例化
2. 抽象方法不能是 private 的
abstract class Shape {
abstract private void draw();
}
// 编译出错 -> 抽象方法不能用http://private修饰
注意:抽象方法没有加访问限定符时,默认是public.
3. 抽象方法不能被 final 和 static 修饰,因为抽象方法就是用来被子类重写的,两者是”天敌“;
public abstract class Shape {
abstract final void methodA();
abstract public static void methodB();
}
// 编译报错: final和static修饰抽象方法,会出问题,二者属于”天敌“
4. 抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要 使用 abstract 修饰
abstract class Shape {
abstract void draw();
abstract public void calcArea();
}
//1.实现抽象方法
class Cycle extends Shape {
@Override
void draw() {
System.out.println("●");
}
@Override
public void calcArea() {
System.out.println("*r*r");
}
}
//2.不实现抽象父类的抽象方法,但是将子类也定义为抽象类
abstract class Triangle extends Shape {
}
5. 抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
6. 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量
2.接口的语法和使用
2.1语法
1.接口的定义格式与类的定义差不多,只要把class改成interface关键字即可。
public interface IOperation {
public abstract void method1();
public void method2();
http:// abstract void method3();
void method4();
}
接口名的的注意事项:1.接口的命名一般以大写的 "I" 开头;2.接口的名字一般使用形容词性单词
推荐:阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性。
2.2特性
1.接口不能直接使用,必须要被一个类来 "实现",并且这个类要实现这个接口中的所有抽象方法
public interface IOperation {
public abstract void method1();
abstract void method2();
}
class A implements IOperation {
//如果不重写接口中的抽象方法,代码在编译期间就会报错
//如果不想重写,那么这个类一定是抽象类
@Override
public void method1() {
}
@Override
public void method2() {
}
}
2.接口与接口之间是继承(extends)关系,类与接口之间是实现关系(implements)关系
public interface IOperation {
}
class A implements IOperation {
}
interface Io extends IOperation {
}
3.接口类型是一种引用类型,不能实例化对象
4.接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为 public abstract(只能是public abstract,其他修饰符都会报错)
public interface IOperation {
private void method() {
}
//编译报错
}
5. 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现
public interface IOperation {
void method();
//编译报错:接口中的方法不能自己实现
public abstract void A() {
}
}
6. 重写接口中方法时,不能使用 default 访问权限修饰 7. 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量,不能改变
interface IA{
double a = 3.0; // 默认被:final public static修饰
}
public class TestDemo {
public static void main(String[] args) {
System.out.println(IA.a); // 可以直接通过接口名访问,说明是静态的
//编译报错
IA.a = 2.0; // 说明brand具有final属性
}
}
8. 接口中不能有静态代码块和构造方法
interface USB {
// 编译失败:接口中不能有构造方法
public USB(){
}
{} // 编译失败:接口中不能有实例代码块
void openDevice();
void closeDevice();
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~