zoukankan      html  css  js  c++  java
  • 《java入门第一季》之面向对象接口面试题

    首先,(1)叙述接口的成员特点:

    /*
    	接口成员特点
    		成员变量;只能是常量,默认都是常量,并且是静态的。
    				默认修饰符:public static final
    				建议:自己手动给出类似:public static final int num3 = 30;的格式
    		构造方法:接口没有构造方法。
    		成员方法:默认只能是抽象方法。
    				默认修饰符:public abstract
    				建议:自己手动给出。
    		
    用几行代码验证上述特点。
    */
    interface Inter {
    	public int num = 10;
    	public final int num2 = 20;
    	public static final int num3 = 30;//(默认)的,但是建议自己自动给出所有修饰
    	
    	//错误: 需要<标识符>,说明接口没有构造方法。
    	//public Inter() {}
    	
    	//接口方法不能带有主体{},因为接口方法是没有内容的,说明只能是抽象方法。
    	//public void show() {}
    
    	//abstract void show(); //默认public,权限最大,因此在子类方法重写的时候访问权限不能更低,父类public子类更应该public建议字符类的权限修饰符都一样
    	public void show(); //默认abstract,建议都写成:public abstract void show();
    }
    
    /*
    class InterImpl implements Inter {
    	public InterImpl() {
    		super();
    	}
    }
    */
    
    class InterImpl extends Object implements Inter {//类实现接口。class 类名 implements接口名{} 
    	public InterImpl() {//子类默认继承于object中的无参构造方法
    		super();
    	}
    	
    	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);
    		System.out.println(i.num3);
    		//i.num = 100;
    		//i.num2 = 200;
    		//System.out.println(i.num); //无法为最终变量num分配值
    		//System.out.println(i.num2);//无法为最终变量num2分配值,验证了final修饰
    		System.out.println(Inter.num);
    		System.out.println(Inter.num2);//接口名称调用成员,说明有static修饰
    		System.out.println(Inter.num3);
    		System.out.println("--------------");
    	}
    }

    (2)、抽象和接口比较:

    抽象类和接口的区别:
    A:成员区别
    	抽象类:
    		成员变量:可以变量,也可以常量
    		构造方法:有
    		成员方法:可以抽象,也可以非抽象
    	接口:
    		成员变量:只可以常量而且是静态
                    构造方法:无
                   成员方法:只可以抽象
    		
    B:关系区别
    	类与类
    		继承,单继承
    	类与接口
    		实现,单实现,多实现
    	接口与接口
    		继承,单继承,多继承
    		
    C:设计理念区别
    	抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。向上抽取
    	接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。属于特性的东西


  • 相关阅读:
    Jenkins中Jelly邮件模板的配置
    十天冲刺(10)
    代码大全阅读笔记01
    大二下学期学习进度(十)
    十天冲刺(9)
    十天冲刺(8)
    统计文章中字母、单词出现的频率
    十天冲刺(7)
    十天冲刺(6)
    十天冲刺(5)
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299851.html
Copyright © 2011-2022 走看看