抽象类与接口
一、抽象类
在面向对象领域中一切都是对象,所有的对象都是用类来描述的,但不是所有的类都可以用来描述对象,比如抽象类。
如果一个类没有具体的信息来描述对象,而需要其他更具体的子类来支撑,那么这个类就是抽象类。好比 new animal();只知道他是动物类,而不知道他具体描述的是哪些动物,也不知道这些动物长什么样,所以他就是抽象类,这时候就需要一些更具体的子类来描述他,比如猫、狗这些知道具体长相的动物。
因为抽象概念没有具体的概念,所以抽象类不能被实例化。
抽象类定义了一组抽象的方法,他需要子类来继承(extends) 他,否则他没有实际的意义。
使用抽象类应注意下面几点:
1、抽象类不能直接实例化,实例化只能有继承他的子类来完成。
2、抽象方法必须由子类来重写。(重写:返回值、方法名、形参都不能改变!只能修改方法的核心内容)
3、只要包含有一个抽象方法的类就是抽象类,他可以包含其他具体的方法,也可以没有,只有抽象方法。
4、抽象方法只能用 public 来修饰。
public abstract class Animal{ //定义抽象类Animal和抽象方法cry() public abstract void cry(){ } //定义一个子类cat继承Animal public class cat extends Animal{ //在子类cat中重写抽象方法cry() @Override public void cry(){ System.out.println("喵喵"); } } //定义一个子类dog继承Animal public class dog extends Animal{ //在子类dog中重写抽象方法cry() @Override public void cry(){ System.out.println("汪汪"); } } } public class Demo { public static void main(String[] args) { //实例化cat()对象 Animal a1 = new cat(); //实例化dog()对象 Animal a2 = new dog(); //分别在子类中调用cry()方法 a1.cry(); a2.cry(); } }
二、接口
接口只是一种形式,没有具体的实现,接口中提供了一些方法来声明他是怎么工作的,也就是接口的作用。
我们通常说用类来实现接口提供的所有方法,使用implements 关键字。
接口可以看作是类的延伸,因为在 Java 中为了保证数据的安全是不能够多重继承的,也就是说一个子类只能继承一个父类,也就限制了子类功能的实现,但一个子类可以实现多个接口,不管这个接口有没有关系,所以接口可以弥补抽象类中不能多重继承的缺陷,接口和继承可以同时使用,这样既可以保证数据的安全性又可以实现更多的功能。
使用接口应该注意以下几点:
1、接口(interface)中所有方法的访问权限声明都只能用 public ,否则会报错。
2、接口中所有的方法都是抽象的,不存在实现的方法。
3、接口中只可以定义不可变的常量(public static final)
4、实现接口的非抽象类必须实现该接口的所有方法
三、抽象类与方法的区别
在抽象类中,可以定义任意范围的成员数据,也可以有非抽象方法(可以实现的方法)。在接口中,只能定义静态的,不可修改的成员数据(一般不在接口中使用成员数据),接口中的全部方法都必须是抽象的。
抽象类:
public abstract class Demo { abstract void method1(); //可以实现 void method2(){ } }
接口:
interface Demo { void method1(); void method2(); }
- java提高篇(五)-----抽象类与接口
- 抽象类和接口的区别
- 抽象类和接口联系与区别
- 关于抽象类和接口之间的区别
- java 抽象类与接口理解
- oop_day06_抽象类、接口_20150814
- 抽象类和接口的探讨
- java 抽象类和接口
- 抽象类和接口的区别
- 静态类,抽象类,接口
- C#面试:抽象类与接口
- 什么时候使用接口?什么时候使用抽象?选择Java接口还是抽象类
- c#接口和抽象类的区别(转载)
- Java基础10 接口的继承与抽象类
- 【转】java提高篇(五)-----抽象类与接口
- 面向对象、继承、接口、抽象类
- 抽象类与接口的区别
- JAVA基础--接口&抽象类
- C#中抽象类和接口的区别
- 抽象类和接口