Java -Abstract ,interface 学习笔记
一 .抽象类和方法
随着继承层次 子类的定义,类变得越来越具体,而父类则更一般 更通用,类的涉及ing该能保证父类和子类能够共享特征,有时将一个父类涉及的非常抽象,以至于他没有具体的实例 者叫抽象类
abstract 修饰类, 方法,不能用来修饰属性,构造器,私有方法,静态方法,final 的方法。
修饰类,
- 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
- 一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
- 抽象类可以包含抽象方法和非抽象方法。
- 抽象类方法的访问权限默认都是public。错误
JDK 1.8以前,抽象类的方法默认访问权限为protectedJDK 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 修饰;抽象类中的方法可以是任意访问修饰符。
要爱上写总结,不断的总结。
不断地反省、提升、改变自己。
简单、专注、持久。