Java 抽象类 接口
Posted 元气满满01
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 抽象类 接口相关的知识,希望对你有一定的参考价值。
抽象
抽象方法定义的格式:
public abstract 返回值类型 方法名(参数);
抽象类定义的格式:
abstract class 类名 {
}
public abstract class Fu {//抽象类 public abstract void work();//抽象方法 public void eat() {//抽象类可以放普通类 System.out.println("吃饭"); } } public class Zi extends Fu{ public void work() { System.out.println("java工程师在工作"); } } public class Zi2 extends Fu{ public void work() { System.out.println("android工程师在工作"); } }
特点
1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。
注意
1、抽象类一定是个父类 因为不断抽取而来的。
2、抽象类中可以定义普通方法。那这个抽象类的存在的意义是不让该类创建对象,方法可以直接让子类去使用
3、abstract 不能和 private(矛盾) 、final(常量) 、 static 一起用
接口
接口是功能的集合
接口只描述所应该具备的方法,并没有具体实现
这样将功能的定义与实现分离,优化了程序设计
接口定义时需要使用interface关键字
定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件
定义格式:
public interface 接口名 {
抽象方法1;
抽象方法2;
抽象方法3;
}
接口中的方法均为公共访问的抽象方法
接口中无法定义普通的成员变量
类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements
格式
class 类 implements 接口 {
重写接口中方法
}
接口中成员的特点
1、接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变。后面我们会讲解static与final关键字
2、接口中可以定义方法,方法也有固定的修饰符,public abstract
3、接口不可以创建对象。
4、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。
接口的多实现
public interface Fu { public abstract void work(); } public interface Zi { public abstract void eat(); } public class Zi2 implements Fu,Zi{ public void eat() { } public void work() { } }
类继承类并实现接口
public abstract class Fu {//抽象类 public abstract void work();//抽象方法 } public interface Zi { public abstract void eat(); } public class Zi2 extends Fu implements Zi{ public void eat() { } public void work() { } }
接口的多继承
public interface Fu {//抽象类 public abstract void work();//抽象方法 } public interface Zi{ public abstract void eat(); } public interface Zi2 extends Fu,Zi{ public abstract void sleep(); }
抽象类与接口的区别
1.抽象类中可以有普通成员变量,接口中没有普通成员变量
2.抽象类可以有构造方法,接口中不能有构造方法
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中可以包含静态方法,接口中不能包含静态方法
5. 抽象类中的抽象方法的访问类型可以是 public,protected ,
但接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型
6. 一个类可以实现多个接口,但只能继承一个抽象类。
7. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,
但接口中定义的变量只是public static final 类型,并且默认即为 public static final 类型。
应用
//定义抽象狗类 public abstract class Dog { public abstract void eat(); public abstract void wang(); } //定义缉毒接口 public interface Look { public void look(); } //定义缉毒狗 public class Jd_Dog extends Dog implements Look{ public void eat() { System.out.println("能吃"); } public void wang() { System.out.println("能汪汪叫"); } public void look() { System.out.println("找毒品"); } }
以上是关于Java 抽象类 接口的主要内容,如果未能解决你的问题,请参考以下文章