当前位置: 首页> 健康> 母婴 > 抽象类与接口

抽象类与接口

时间:2025/9/21 4:26:56来源:https://blog.csdn.net/kkksij/article/details/141883352 浏览次数:0次

1.1:

抽象类概念:如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类

ex1:

以Animal类为例:其自身并不是一个具体的动物,其内部的成员方法bark无法实现。

但子类Dog和Cat都是具体的动物,可以实现各自的功能。故Animal即为抽象类。

在bark例子中,父类的bark方法似乎并没有做出什么实际的工作,bark各种功能的实现都是由Animal的各种子类来实现的。像这种没有实际工作的方法,我们可以将它设计为一个抽象方法(abstract method),包含抽象方法的类我们称为抽象类。

1.2抽象类语法

在java中,一个类如果被abstract修饰则称为抽象类。抽象类中被abstract修饰的方法称为抽象方法。抽象方法不用给出具体的实现。

EX1:

// 抽象类:被abstract修饰的类
public abstract class Shape {
// 抽象方法:被abstract修饰的方法,没有方法体
abstract public void draw();
abstract void calcArea();
// 抽象类也是类,也可以增加普通方法和属性
public double getArea(){
return area;
}
protected double area; // 面积
}

注:抽象类也是类,内部可以包含普通方法和属性,甚至构造方法。

1.3抽象类的特性:

1.抽象类不能直接实例化对象

ex1:

Shape shape = new Shape();
// 编译出错
Error:(30, 23) java: Shape是抽象的; 无法实例化

2.抽象方法不能为private

3.抽象方法不能被static 和 final修饰,因为抽象方法要被子类重写。

4.抽象类要被继承,并且继承后的子类也要重写父类中的抽象方法,不想重写的话子类也必须为抽象类,用abstract修饰。

EX1:

// 矩形类
public class Rect extends Shape {
private double length;
private double width;
Rect(double length, double width){  //子类构造方法
this.length = length;
this.width = width;
}
public void draw(){   //重写父类抽象方法
System.out.println("矩形: length= "+length+" width= " + width);
}
public void calcArea(){//重写父类抽象方法
area = length * width;
}
}

5.抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类。

6.抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量。

2.接口的概念

现实生活中接口的例子有很多,如笔记本电脑上的usb接口,电源插座等。

在电脑的usb插口上可以插鼠标,键盘,u盘等。

电源插座可以插笔记本电脑,电视机等各种用具

通过上述例子可以看出: 接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用
Java 中,接口可以看成是:多个类的公共规范,是一种引用数据类型。

2.2接口的语法规则

1.接口中的抽象方法默认都是public abstract修饰的

public interface 接口名称{
// 抽象方法
public abstract void method1(); // public abstract 是固定搭配,可以不写
public void method2();
abstract void method3();
void method4();
// 注意:在接口中上述写法都是抽象方法,推荐method4,代码更简洁

注: 1. 创建接口时, 接口的命名一般以大写字母 I 开头.
2. 接口的命名一般使用 "形容词" 词性的单词.
3. 阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性。)
2.接口中的成员变量,默认是public static final修饰的。
ex1:
3.接口中的方法被default修饰,则可以有具体的实现。
4.如果接口中的方法可以被static修饰,也可以有具体的实现。
5.接口是不能进行实例化
6.类与接口之间,可以用implements来实现接口
7.一个接口对应一个字节码文件
8.如果一个类不想实现接口中的方法,那么此时的类便可定义为抽象类,但如果这个抽象类被继承,那么就要实现所有没有被实现的方法。
一个类实现多接口:
2.3接口间的多继承
2.4接口之间的多继承
interface IRunning {
void run();
}
interface ISwimming {
void swim();
}
// 两栖的动物, 既能跑, 也能游
interface IAmphibious extends IRunning, ISwimming {
}
class Frog implements IAmphibious {
...
}
通过接口继承创建一个新的接口 IAmphibious 表示 " 两栖的 ". 此时实现接口创建的 Frog , 就继续要实现 run
, 也需要实现 swim 方法 .
接口间的继承相当于把多个接口合并在一起 .
2.5抽象类与接口之间的区别:
核心区别 : 抽象类中可以包含普通方法和普通字段 , 这样的普通方法和字段可以被子类直接使用 ( 不必重写 ), 而接口中 不能包含普通方法, 子类必须重写所有的抽象方法。
关键字:抽象类与接口

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: