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

    一、接口

      接口是抽象方法和常量值的定义的集合

      从本质上将,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

      例:

    public interface runner{
      public static final int id = 1;
      public void start();
      public void run();
      public void stop();        
    }
    

      java是只支持单继承的,但现实之中存在于多重继承这种现象。因此可以借助接口帮助我们实现多重继承。  

      抽象类所具有的一些东西接口可以有,加入一个抽象类里面所有的方法都是抽象的,没有任何一个方法需要这种抽象类去实现,并且这个抽象类里面所有的变量都是静态(static)变量,都是不鞥改变(final)的变量,这时可以把这样的抽象类定义为一个借口(interface)。把一个类定义为一个借口的格式是把声明类的关键字class用声明借口的关键字interface替换掉。

      public interface JavaInterface{

      }

    对于多继承来说,在一个子类对象里面实际上包含有多个父类对象,而对于但继承来书哦,子类对象里面只有一个父类对象。多继承子类对象就有多个父类对象,而这些父类对象之间可能游湖存在有重复的成员变量,这就非常容易出现问题,因此在java里面避免了这种问题的出现,采用了接口这种方式来实现多继承。作为接口来说,一个类可以从接口继承(或者叫接口实现),这也是多继承,接口里面的成员变量不专属于某个对象,都是惊天的成员变量,是属于整个类的,因此一个类去实现多个接口也是无所谓的,不会存在对象之间互相冲突的问题。实现多个接口,也即是实现多重继承,而且又避免了多重继承容易出现的问题,这就是用接口实现多重继承的好处。

    二、接口特性

      1、接口可以多重实现

      2、接口中欧声明的属性默认为public static final的;也只能是public static final

      3、接口中只能定义抽象方法,而且这些方法默认为public,也只能是public的,

      4、接口可以继承其他的接口,并添加新的额属性和抽象方法。

    package com.lost.interface1;
    
    interface Painter
    {
    	public void eat();
    	public void paint();
    }
    interface Singer
    {
    	public void sing();
    	public void sleep();
    }
    class Student implements Singer
    {
    	private String name;
    	public Student(String name)
    	{
    		this.name = name;
    	}
    	public String getName()
    	{
    		return this.name;
    	}
    	public void sing()
    	{
    		System.out.println("Stduent is singing");
    	}
    	public void sleep()
    	{
    		System.out.println("Student is sleeping");
    	}
    	public void study()
    	{
    		System.out.println("Studying.........");
    	}
    }
    
    class Teacher implements Singer,Painter
    {
    	String name;
    	public  Teacher(String name) {
    		// TODO Auto-generated constructor stub
    		this.name = name;
    	}
    	@Override
    	public void eat() {
    		// TODO Auto-generated method stub
    		System.out.println("teacher is eating");
    	}
    
    	@Override
    	public void paint() {
    		// TODO Auto-generated method stub
    		System.out.println("teacher is painting");
    	}
    
    	@Override
    	public void sing() {
    		// TODO Auto-generated method stub
    		System.out.println("teacher is singing");
    	}
    
    	@Override
    	public void sleep() {
    		// TODO Auto-generated method stub
    		System.out.println("teacher is sleeping");
    	}
    	
    	public String getName()
    	{
    		return this.name;
    	}
    	public void setName(String name)
    	{
    		this.name = name;
    	}
    	
    }
    public class TestInterfaces {
    	public static void main(String[] arg)
    	{
    		Singer s1 = new Student("le");
    		s1.sing();
    		s1.sleep();
    		Singer s2 = new Teacher("steven");
    		s2.sing();
    		s2.sleep();
    		Painter p1 = (Painter)s2;
    		p1.paint();
    		p1.eat();
    	}
    }
    

      一个类可以实现多个无关的接口。多个无关的类也可以实现同一个接口。

  • 相关阅读:
    设计模式之_6大设计原则(转)
    Django-ORM多表操作(进阶)
    03-django模型(1)
    02-Django基础知识
    web开篇
    body标签中的相关标签
    01-前端初识
    Flask简述
    浅析设计模式
    Python的单例模式
  • 原文地址:https://www.cnblogs.com/lobsterIT/p/4807307.html
Copyright © 2011-2022 走看看