标签:
package com_package1; public abstract class Interface { abstract void show(); abstract void method(); }
当一个抽象类中全都是抽象方法的时候,这时,可以将这个抽象类定义成接口。
接口是一个特殊的抽象类,初期的一种简单理解,以为着接口中的方法都是抽象方法
接口定义的格式: interface 接口名(接口内容)
interface Inter
{
//接口成员,都有固定的修饰符
//常见:1、常量,全局常量,有固定的修饰符public static final
// 2、抽象方法 ,有固定的修饰符 public abstract
}
package com_package1; public interface Inter { public static final int NUM = 3; public abstract void show(); }
接口的特点:
1、接口用interface来定义
2、接口中的的成员都有固定的修饰符
3、接口不能被实例化
4、接口必须由其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则,该子类还是一个抽象类。
5、接口中的成员都是public权限
定义一个接口的子类去对该类接口中的方法进行覆盖
package com_package1; public class InterImpl implements Inter { @Override public void show() { // TODO Auto-generated method stub } }
类与类之间是继承关系,类与接口之间是实现关系
接口的好处:接口可以被多实现,这就是多继承机智哎java语言被改良后的结果,一个类只能继承一个父类但是一个类可以实现多个接口
package com_package1; public interface A { public abstract void show1(); }
package com_package1; public interface B { public abstract void show2(); }
package com_package1; public class C implements A,B{ @Override public void show2() { // TODO Auto-generated method stub } @Override public void show1() { // TODO Auto-generated method stub } }
误区:记住:抽象函数,也要遵从函数的基本定义格式,要明确结果,要明确未知内容,只不过函数体由子类完成
package com_package1; public interface Inter { //public static final int NUM = 3; public abstract void show(); public abstract int add(int x,int y); }
package com_package1; public class InterImpl implements Inter { @Override public void show() { System.out.println("show run"); // TODO Auto-generated method stub } @Override public int add(int x, int y) { // TODO Auto-generated method stub return x+y; //return 0; } }
接口避免了单继承的局限性
特别的:
package com_package1; public class A { public void show() { System.out.println("aaaaaaaaaaaa"); } }
package com_package1; public interface B { public abstract void show(); }
package com_package1; public class C extends A implements B{ //西安阿紫不用在这里面对接口中的抽象类进行实例化了,因为他已经继承了A中的show(),就已经实例化了。 }
类与类之间是继承关系,接口与接口之间是继承关系,接口与类之间是实现关系。
package com_package1; public interface A { public abstract void showA(); // }
package com_package1; public interface B extends A{ public abstract void showB(); }
package com_package1; public interface C extends B{ public abstract void showC(); }
package com_package1; public class Demo implements C { @Override public void showB() { // TODO Auto-generated method stub } @Override public void showA() { // TODO Auto-generated method stub } @Override public void showC() { // TODO Auto-generated method stub } }
标签:
原文地址:http://www.cnblogs.com/mmlovejj/p/4486391.html