面向对象之接口特点及接口成员特点

面向对象之接口讲解
接口的特点:
A:接口用关键字interface表示
interface接口名{}
B:类实现接口用implements表示
class类名implements 接口名{}
注意:常用接口名+Impl这种格式是接口的实现类格式
C:接口不能实例化
那么,接口如何实例化呢?
按照多态的方式来实例化
D:接口的子类
a:可以是抽象类。但是意义不太
b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)

由此可见:
A:具体类多态(几乎没有)
B:抽象类多态(常用)
C:接口多态(最常用)
接口成员的特点:
成员变量:接口中定义的变量都默认为常量,只能赋值 一次,并且默认变量为静态变量。

     建议在开发是定义在接口中的变量书写完整:
        public static final int num = 10;
//接口变量默认为常量,而且是静态
package InterFaceDemo;
interface Inter {
    public int num = 10;
    public final int num2 = 20;
}
//接口名+Impl这种格式是接口的实现类格式
class InterImpl implements Inter {
}
//测试类
class InterFaceDemo2 {
 public static void main (String[] args) {
//创建对象
Inter i = new InterImpl() ;
System. out.println(i.num) ;//10
System. out .println (i. num2) ;//20
//重新赋值
//i.num = 100;
//i.num2 = 200 ;
//System. out.println(i.num); //报错:无法为最终变量num分配值
//System. out. println(i.num2) ;//报错无法为最终变量num2分配值
//静态方法用接口调用变量
//System.out.println(Inter.num);//可运行10
//System.out.println(Inter.num2);//可运行20
System. out .println ("------") ;
 }

构造方法:接口没有构造方法。所有的类都有一个继承Object

实际的类应该是这样的:(建议开发中书写完整)
 class InterImpl extends Object  imple ments Inter{}

问题 :那么接口中没有构造方法,会影响子类访问父类初始化吗?
回答 :不会。因为以下的接口类中,都是默认以Object为父类。

   package InterFaceDemo;
/*类Object是类层次结构的根类,每个类都使Object作为超类
* Object本身是无参构造,所以所有子类默认调用它的无参构造
*/
interface Inter {
  public static final int num = 10;
  public static final int num2 = 20;
  //class Inter(){} 
  //报错:说明接口中没有构造方法
}
class InterImpl extends Object implements Inter {
  public InterImpl() {
  super();//该类继承了Object(默认)
  }
}
//测试类
class InterFaceDemo2 {
public static void main (String[] args) {
//创建对象
//Inter i = new InterImpl() ;
System. out.println(Inter.num) ;
System. out .println (Inter. num2) ;
}
}

成员方法
只能是抽象方法
默认修饰符: public abstract
建议:自己手动给出

package InterFaceDemo;
interface Inter {
    public static final int num = 10;
    public static final int num2 = 20;
    /*演示一
    public void show() {};//接口里的成员方法必须是抽象的
        报错:接口方法不能带有主体
    */
    /*演示二
     * abstract void show();说明这里应是默认的public
     * */
}
class InterImpl extends Object implements Inter {
	public InterImpl() {
		super();
	}
	//void show(){}
	//报错:访问权限低
	public void show() {}
}
//测试类
class InterFaceDemo2 {
 public static void main (String[] args) {
//创建对象
  Inter i = new InterImpl() ;
  System. out.println(i.num) ;
  System. out .println (i. num2) ;
 }
}

总结:
成员变量:只能是常量
●默认修饰符public static final
构造方法
●没有,因为接口主要是扩展功能的,而没有具体存在
成员方法
●只能是抽象方法
●默认修饰符public abstracd
I

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值