Java抽象类,抽象方法和接口

Jelena ·
更新时间:2024-09-21
· 975 次阅读

  抽象类和抽象方法   在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.接口中可以定义内部类和内部接口



java抽象 JAVA 方法 java抽象类 抽象方法 接口

需要 登录 后方可回复, 如果你还没有账号请 注册新账号