Java初学Day5---抽象类和接口

第五天

1:抽象类和普通类的区别

1:抽象方法介绍

当父类的某些方法不确定时,或者每一个子类都有不同的表现形式的时候,可以用abstract关键字来修饰该方法

被abstract修饰,没有方法体的方法,就叫抽象方法,

特点:

  1. 抽象方法没有方法体,只有方法的声明
  2. 如果一个类中存在抽象方法,那么这个类必须要声明为抽象类

如果父类中有一个方法,每一个子类都有不同的实现,此时可以将这个方法声明为抽象方法,抽象方法是没有方法体的,只是一种规范。

Pet类中的toHospital() 方法不需要具体的实现,而且实现后没有任何意义,此时可以将Pet类中的toHospital()声明为抽象方法;

什么是抽象方法:被abstract修饰的方法,就是抽象方法。

  1. 抽象类为什么不能实例化?- 不能实例化,抽象类中可能会存在抽象方法,抽象方法是不完整的方法,没有方法体,如果被调用,完全没有意义
  2. 抽象类中是否可以存在构造方法? - 可以存在,他不能实例化,构造方法有什么用? -- 留给子类调用的
  3. 抽象类和抽象方法的关系? -  抽象方法必须在抽象类中进行声明,抽象类中可以存在抽象方法,也可以不存在
  4. 什么是抽象类? - 被abstract修饰的类就是抽象类,特点:不能实例化 
  5. 抽象类能不能继承普通类? - 可以
  6. 普通类能不能继承抽象类?   - 可以
  7. 抽象方法和普通方法的的区别!
  1. 抽象方法没有方法体,普通方法一定要有方法体
  2. 抽象方法一定要有abstract修饰,普通方法一定不能有
  3. 抽象方法只能在抽象类中,普通方法既可以在抽象类中也可以在普通类中
  4. 被继承时,抽象方法必须要被子类重写,普通方法没有要求
  1. 抽象类和普通类的区别?
  1. 抽象类不能被实例化,普通类可以
  2. 抽象类需要有abstract修饰,普通类不能
  3. 抽象类可以有抽象方法,普通类一定不能存在抽象方法
  1. 是否存在抽象的构造方法? - 不存在,
  2. 是否存在抽象的静态方法? - 不存在
  3. 抽象类中是否存在静态方法? - 可以存在的,静态方法不需要对象来调用,直接通过类名既可以直接访问
  4. 关于继承,跟是否抽象无关,都可以互相去继承

语法:方法体,调用

特征:

1:抽象方法没有方法体,只有方法的声明;

2:如果一个类中存在抽象方法,那么这个类必须声明为抽象类;abstact修饰的类,抽象类不能创建对象

3:抽象类不能被实例化;

4:抽象方法必须在子类中被重写,除非子类也是抽象类;

如:

// 抽象类

public abstract class Pet{

 //抽象方法

public abstract void toHospital();

2、抽象类和抽象方法的关系  

1:有抽象方法的类,一定是抽象类,但抽象类不一定有抽象方法;

2:一个类继承抽象类,必须重写抽象类中的所有抽象方法,如果没有全部重写,那么子类必须声明为抽象类

3:没有抽象构造方法,也没有抽象静态方法

4:抽象类中可以有构造方法,创建子类的实例时调用

  1. 抽象类和普通类的区别 - 记住3条以上  

1、语法不同,抽象类是被abstract修饰的类,普通类一定不能被abstract修饰;

2、抽象类中可以有抽象方法,普通类一定不能有抽象方法;

3、抽象类不能被实例化普通类可以去实例化调用;- 创建对象

4、抽象类被继承时,子类必须重写全部的抽象方法,或者将子类声明为抽象类;普通类继承普通类的时候,没有任何限制;

2:接口

1:什么是接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合(接口中的所有的方法都是抽象方法),接口通常以interface来声明

接口是一个特殊的类,这个类中只能存值抽象方法,为了和普通的类去做区分,同时弥补java单继承的缺陷,把这个特殊的类叫接口,使用interface声明接口

一个类通过实现接口的方式,从而来实现接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

2:接口的声明

声明接口的语法:

public interface MyInterface {

public abstract void eat(); // 接口中的所有方法都是抽象方法;

void run(); // 可以省略前面的修饰

}

3:接口的特点   

1、接口不能用于实例化对象。

2、接口没有构造方法。

3、接口中所有的方法必须是抽象方法。默认为:public abstract

4、接口不能包含成员变量,除了 public static final 量。

5、接口不是被类继承了,而是要被类实现。实现使用关键字:implements 

6、接口支持多实现

7、一个类可以继承一个类的同时实现多个接口。

3:使用接口

使用接口的步骤:

  1. 创建接口,声明方法
  2. 创建类,实现接口,实现接口中的方法
  3. 使用实现后的方法执行具体的操作

4:接口与抽象类的区别  

  1. 抽象类使用关键字abstract class修饰,接口使用关键字interface;
  2. 抽象类使用关键字extends实现继承,接口使用implements来实现
  3. 抽象类中可以包含抽象方法和普通方法,接口中只能有抽象方法(1.7);
  4. 抽象类可以有构造方法,接口中不能有构造方法;

5、抽象类可以有成员变量,接口中只能有常量;

6、抽象类只能单继承,接口可以多继承;

7、抽象类里面的方法可以是public,protect,private,接口的方法只能是public;

作业:

 

拓展 :

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值