JAVA8实战

abstract

1)定义
a.**abstract(抽象)**关键字可以用来修饰类和方法。
b.abstract修饰的类叫做抽象类,该类不能被实例化,也就是不能使用关键字new来创建该类对象。
c.abstract修饰的方法叫做抽象方法,抽象方法只有声明部分,而没有具体的方法体。

2)特点以及规范:
a.非抽象类子类的父类是一个抽象类的话,它必须具体实现父类的所有抽象方法,非抽象方法可以不实现。
b.抽象方法的类,必须用abstract来修饰(抽象类也可以没有抽象方法,但抽象方法必须出现在抽象类中)。
c.一个抽象类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现。

具体可以看例子:

public class TryAbstract {public static void mainString[] args) {System.out.println”a”);sonn person = new sonn);person.ShowHello);}}// 抽象类也可以使用接口,但是子类必须得重新接口方法or子类是抽象类)abstract class Humen implements Comparable {// 抽象类成员可以是抽象的也可以是非抽象的,如下public Humen) {System.out.println”c”);}// 抽象类不可以被实例化,但是有main方法的话,却是可以被执行的public static void mainString[] args) {System.out.println”抽象类不可以被实例化,但是有main方法的话,却是可以被调用的”);}// 抽象方法必须写在抽象类里abstract void ShowHello);public void haha) {}}// 继承抽象类class sonn extends Humen {// 继承抽象类,必须重写该类的抽象方法@Overridepublic void ShowHello) {// 抽象方法内不可有private参数// private int b = 2;System.out.println”b”);}// 抽象类不可以被实例化,具体如下(解声明)// Humen humen = new Humen);@Overridepublic int compareToObject o) {// TODO Auto-generated method stubreturn 0;}}// 子类也是抽象类的话,无需重新继承抽象类的抽象方法abstract class abstractSon extends Humen {// 不写Override也是可以的} implements

1)定义:
a.implement所表示的是接口
b.接口其实就是一个抽象类,这个类里面的方法全是抽象方法(抽象类可以包含非抽象方法,但接口这个抽象类里的方法必须全是抽象方法)

2)特点以及规范:
a.一个类可以实现多个接口,但只能继承一个父类
b.定义接口的类里面,方法默认是public abstract 的,也只能是public abstract
c.定义在接口里的变量只能是 public static final
d.可以通过interface关键字来定义抽象类为接口
e.可以通过implements 来实现接口,实现多个接口的时候,用“,”分隔开接口名称

具体看实例:

//可以继承一个父类,实现多个接口public class TryCreateAndUseImplements extends FartherOne implements TheImplement1, TheImplement2 {//实现接口后,也要实现接口里的方法,不然会报错。@Overridepublic void implementWay3) {}public void implementWay1) {}public void implementWay2) {}}//定义接口interface TheImplement1 {// 因为接口里的方法都是抽象的,所以不用abstract来声明也是可以的public void implementWay1);// 也不需要在方法的后面在()后面加上{},如下:public abstract void implementWay2);}//定义接口interface TheImplement2 {//默认public static final 所以不写也可以int i = 1;public static final int j = 2;//只能是public static final,除此之外的都会报错//protected int j = 2;public void implementWay3);}class FartherOne{protected int i = 1;} abstract 与 implements的区别

注意
之前有说过,父类声明子类实例化,这个叫对象上转型实例化
如farther faa = new son);
但在接口中,它有另一个名字叫接口回调其实都是一个东西,接口声明,实现接口的类进行实例化。

——-END

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注