Java -Abstract ,interface 学习笔记

 

一 .抽象类和方法

随着继承层次 子类的定义,类变得越来越具体,而父类则更一般 更通用,类的涉及ing该能保证父类和子类能够共享特征,有时将一个父类涉及的非常抽象,以至于他没有具体的实例 者叫抽象类

 

abstract 修饰类, 方法,不能用来修饰属性,构造器,私有方法,静态方法,final 的方法。

修饰类,

  1. 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
  2. 一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
  3. 抽象类可以包含抽象方法和非抽象方法。
  4. 抽象类方法的访问权限默认都是public。错误
    JDK 1.8以前,抽象类的方法默认访问权限为protected
    JDK 1.8时,抽象类的方法默认访问权限变为default
    关于接口
    JDK 1.8以前,接口中的方法必须是public的
    JDK 1.8时,接口中的方法可以是public的,也可以是default的
    JDK 1.9时,接口中的方法可以是private的

 修饰方法:

>方法就没有方法体,没声明 。publicn abstract  void eat { }  包含抽象方法的类一定是抽象类。

》若子类重写了父类的方法后 子类方可实例化

二 接口

1.使用interface来定义

2.Java 中,接口和类是并列的两个结构

3.如何定义接口,定义接口中的成员

 3.1 JDK7 及以前,只能定义全局常量和抽象方法

      》全局常量:public static final的,但是书写时,可以省略不写

    》抽象方法,public abstract的

 3.2 JD8 除了定义全局常量和抽象方法外,还可以定义静态方法。默认方法

4.接口中不能定义构造函数,意味着接口 不可以实例化

5。Java开发中,接口通过让类去实现(implement )的方式来使用。

 

X不知道是是哪个的?

 

关于抽象类与最终类,下列说法错误的是?

抽象类能被继承,最终类只能被实例化。//
抽象类和最终类都可以被声明使用//抽象类和最终类都可以被声明使用,这里只是说“声明”,并没有说“实例化”;如果只是声明是可以的,最常见的使用方式就是:
1、父类类型的引用指向子类的对象;
2、 接口类型的引用指向该接口的实现类的对象;
以上两种使用方式也就是所谓的“向上转型”
抽象类中可以没有抽象方法,最终类中可以没有最终方法
抽象类和最终类被继承时,方法可以被子类覆盖


1,抽象类中可以有抽象方法,也可以没有抽象方法。
2,抽象类当然可以被继承,因为它就是用来继承的,
3,继承抽象类,若有抽象方法,则子类必须将其抽象方法实现,
4,抽象类中的非抽象方法可以被重写。

最终类和抽象类正好相反
5,加上final的类就叫最终类,加上final的方法就叫最终方法,
6,最终类中可以有最终方法也可以没有
7,最终类不能有子类,最终方法不能被重写
接口和抽象类有什么区别?
实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。
构造函数:抽象类可以有构造函数;接口不能有。
main 方法:抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。
实现数量:类可以实现很多个接口;但是只能继承一个抽象类。
访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。 
posted @ 2021-05-22 16:39  tzmok  阅读(151)  评论(0编辑  收藏  举报