• 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
    
  • 相关阅读:
    2017.11.10 MPLAB IPE + ICD-3+ PIC32MM
    How to Have a Healthy Relationship --shanbei 为单身节写
    New Concept English three (35)
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的dockOptions属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象unifiedTitleAndToolBarOnMac属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象dockNestingEnabled属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的tabShape属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象documentMode属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的toolButtonStyle属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的animated属性
  • 原文地址:https://www.cnblogs.com/031602523liu/p/8654193.html
Copyright © 2020-2023  润新知