zoukankan      html  css  js  c++  java
  • Java 接口

    • Java只支持单继承,如果我们想封装现实生活中的多继承现象借口可以帮助我们。
    • 接口是抽象方法和常量值的集合。
    • 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
    • 接口定义举例
    public interface Runner
    {
        public static final int id = 1;
        
        public void start();   //不用写abstract
        public void run();
        public void stop();
    }
    

    接口特性


    • 接口可以多重实现。
    • 接口中声明的属性默认为public static final的,也只能是public static final的。解决C++中多继承出现的问题。
    • 接口中只能定义抽象方法,而且这些方法默认为public,也只能时public的。
    • 接口可以实现其它的接口,添加新的属性和方法。
    • 类可以实现接口通过implements语句,相当于继承。有了重写和继承,如果有interface这个成员变量指向子类对象,就可以实现多态。
    • 多个无关的类可以实现同一个接口。
    • 一个类可以实现多个无关的接口。多继承。
    • 使用什么接口只能看得到它包含的方法
    • 接口的引用可以指向所有实现了该接口的类对象。下面例子的Teacher,如果用Painter指向,只能看到paint和eat方法,如果用Singer指向,只能看到sing和sleep方法,相当于换了一个窗口来看Teacher。
    • 例子说明
    interface Singer
    {
    	public void sing();
    	public void sleep();
    }
    interface Painter
    {
    	public void paint();
    	public void eat();
    }
    class Student implements Singer
    {
    	private String name;
    	Student(String name)
    	{
    		this.name = name;
    	}
    	public void study()
    	{
    		System.out.println("studing");
    	}
    	public String getName()
    	{
    		return name;
    	}
    	public void sing()
    	{
    		System.out.println("student is singing");
    	}
    	public void sleep()
    	{
    		System.out.println("student is sleeping");
    	}
    }
    class Teacher implements Singer,Painter  //相当于多继承
    {
    	private String name;
    	Teacher(String name)
    	{
    		this.name = name;
    	}
    	public void teach()
    	{
    		System.out.println("teaching");
    	}
    	public void sing()
    	{
    		System.out.println("teacher is singing");
    	}
    	public void sleep()
    	{
    		System.out.println("teacher is sleeping");
    	}
    	public void paint()
    	{
    		System.out.println("teacher is painting");
    	}
    	public void eat()
    	{
    		System.out.println("teacher is eating");
    	}
    }
    public class Main
    {
    	public static void main(String args[])
    	{
    		Singer s1 = new Student("le");
    		s1.sing();s1.sleep();   //多态存在
    		Singer s2 = new Teacher("steven");
    		s1.sing();s1.sleep();   //多态存在
    		Painter p1 = (Painter)s2;
    		p1.paint();p1.eat();    //多态存在
    	}
    }
    输出结果:
    student is singing
    student is sleeping
    student is singing
    student is sleeping
    teacher is painting
    teacher is eating
    
  • 相关阅读:
    图片处理工具类
    基于Redis的在线用户列表解决方案
    Windows安装Mysql5.7.10绿色版
    开启MongoDB客户端访问控制
    在Windows上安装MongoDB
    MongoDB介绍
    常用linux命令
    添加本地jar包到本地的Maven仓库以及在Maven仓库中搜索想要添加的jar包
    Centos6.5安装memcached
    Archive for required library:xxxxx/spring-beans-3.2.4.RELEASE.jar in project XXXXX cannot be read or is not a valid ZIP file
  • 原文地址:https://www.cnblogs.com/031602523liu/p/8654193.html
Copyright © 2011-2022 走看看