您的位置:首页 > 其它

抽象类与接口

2018-12-06 17:31 85 查看

一、抽象类

在面向对象领域中一切都是对象,所有的对象都是用类来描述的,但不是所有的类都可以用来描述对象,比如抽象类。

如果一个类没有具体的信息来描述对象,而需要其他更具体的子类来支撑,那么这个类就是抽象类。好比 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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: