A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaobokk 中级黑马   /  2016-8-3 22:10  /  371 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

接口:
        接口概述:
                -->狭义:java中的interface
                -->广义:对外提供规则的都是接口
       
        接口的特点:
                A:接口用关键字interface表示
                        -->interface 接口名 {}

                B:类实现接口用implements表示
                        -->class 类名 implements 接口名{}

                C:接口不能实例化
                        如何实例化?
                                -->按照多态的方式来实例化
                       
                D:接口的子类
                        1.可以是抽象类,但是意义不大
                        2.可以是具体类,要重写接口中的所有抽象方法
                                -->如果继承的类中已经重写了一部分方法的话,那么只要重写剩余抽象方法就行了
       
        接口的成员特点:
                成员变量:
                        只能是常量,并且是静态的公开的.
                         --> public static final  (建议自己给出)
               
                构造方法:
                        接口中没有构造方法
               
                成员方法:
                        默认修饰符:public static  (建议自己给出)
       
        类与类,类与接口,接口与接口的关系
                类与类:
                        继承关系-->只能单继承,支持多层继承
       
                类与接口:
                        实现关系-->可以单实现,也可以多实现
                                -->可以理解为一个人可以学习多个技能
               
                接口与接口:
                        继承关系,可以单继承,也可以多继承
       
        抽象类与接口的区别:
                抽象类:
                        成员变量:可以变量,也可以是常量
                        构造方法:有
                        成员变量:可以抽象,也可以非抽象
               
                接口:
                        成员变量:只可以常量
                        成员方法:只可以抽象
               
                设计理念的不同:
                        抽象类体现的是一种"is a" 的关系
                        接口 被实现体现的是一种"like a"的关系

        附上一段接口的示例代码

[Java] 纯文本查看 复制代码
class Test {
	public static void main(String[] args){
		SmokingStudent s = new SmokingStudent("刘",21);
		s.study();
		s.smoke();
	}
}

interface Smoking {
	public abstract void smoke();
}

abstract class Person {
	private String name;
	private int age;

	public Person(){}

	public Person(String name,int age){
		this.name = name;
		this.age = age;
	}

	public void setName(String name){
		this.name = name;
	}

	public String getName(){
		return name;
	}

	public void setAge(int age){
		this.age = age;
	}

	public int getAge(){
		return age;
	}
}


abstract class Student extends Person {
	public Student(){}

	public Student(String name,int age){
		super(name,age);
	}

	public abstract void study();
	
}

class SmokingStudent extends Student implements Smoking{
	public SmokingStudent(){}

	public SmokingStudent(String name,int age){
		super(name,age);
	}
	
	public void study(){
		System.out.println("学生学习");
	}

	public void smoke(){
		System.out.println("学生抽烟");
	}

} 

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马