java9.0——抽象类和接口

目录

一,抽象类

1.什么是抽象类

2.抽象类语法

3.抽象类作用

二,接口

1.什么是接口

2.语法规则

3.接口的使用

4.接口的特性

5.接口有什么用?

6.抽象类和接口的区别


一,抽象类

1.什么是抽象类

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

没有实际工作的方法, 我们可以把它设计成一个 抽象方法, 包含抽象方法的类我们称为 抽象类

2.抽象类语法

// 抽象类:被abstract修饰的类
public abstract class Shape {

  // 抽象方法:被abstract修饰的方法,没有方法体
  abstract public void draw();
  abstract void calcArea();

  // 抽象类也是类,也可以增加普通方法和属性
  public double getArea(){
    return area;
 }

  protected double area;   // 面积
}

【注意】

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

2.抽象方法不能是private的(默认public)

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

4.抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰

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

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

3.抽象类作用

相当于一层保险,防止子类的工作误被父类完成,类比final

二,接口

1.什么是接口

在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型

2.语法规则

格式与定义类时相同,但是需将class换为interface

public interface 接口名称{
抽象方法...
}

【注】

接口名称一般使用“形容词”,首字母大写,且无修饰符号

3.接口的使用

接口的使用要有一个类来实现(implements)该接口,实现接口中的所有抽象方法。

public  class 类名称 implements 接口名称{
  // ...

 ——   空 ——后补代码

4.接口的特性

1. 接口类型是一种引用类型,但是不能直接new接口的对象(不能当类使用)

2. 接口中每一个方法都是public的abstract方法.

3. 接口不能用来实现方法,必须由类来实现

4.重写接口中方法时一定用public修饰

5.接口中的变量不变,默认public static final

6.接口中不能有静态代码块和构造方法

7.接口虽然不是类,但是接口编译完成后字节码文件的后缀格式也是.class

8.类需要完成接口中的所有方法(接口多继承后也要),否则也设为抽象类

9.接口之间可以多继承,类似于接口相插

interface IRunning {
  void run();
}

interface ISwimming {
  void swim();
}

// 两栖的动物, 既能跑, 也能游
interface IAmphibious extends IRunning, ISwimming {
}
//接口相接
class Frog implements IAmphibious {//也实现了一个类的多接口
...
}

10.一个类可以接多个接口

public interface A{
void a();
}
public interface B{
void b();
}

class C{
void c(){}
}

public class D extends C implements A,B{//一个类,多个接口
public void a(){}//实现接口中的所有方法
public void b(){}

public void c(){}//重写C类c方法

}

5.接口有什么用?

实现多态

而且这里有继承,有接口,继承就像是定义一个(is-a)具体的物体,而接口就是给这个物体加具体的描述(has-a)

例如:有一个animal父类,里面有name对象,eat()方法,被dog子类继承了,重写以后也都表示出来了,但这里为了让人们省心,就有了接口,可以不去关注具体类型(狗OR猫OR其他),而对某个对象再进行属性的添加

6.抽象类和接口的区别

核心区别:

抽象类中可以包含普通方法和普通字段, 这样的普通方法和字段可以被子类直接使用(不必重写),

接口中不能包含普通方法, 子类必须重写所有的抽象方法.

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值