抽象

抽象

抽象方法:就是加上abstract关键字,然后去掉大括号,直至分号结束,必须存在于抽象类当中。

抽象类:抽象方法所在的类,在class之前写上abstract即可。

Demo:

public abstract class Animals{
    //抽象方法
	public abstract void method();
    //抽象类,在抽象类中仍可定义一般方法
    public void ff(){
        System.out.println("这是一个一般方法!");
    }
}

抽象方法和抽象类的使用:

注意:

1、不能直接创建new抽象类对象

2、必须要用一个子类来继承抽象父类。

3、子类(非抽象类)必须覆盖重写重写父类中的所有抽象方法。

覆盖重写(实现):子类去掉abstract关键字,然后补上方法体大括号。

可以通过@override来查看重写是否成功

4、当子类为抽象类时,不用抽象,但是可以加入进去新的内容,在使用时仍然需要重写,父类的所有抽象方法

Demo(抽象父类):

public abstract  class AbstractMethod {
        //抽象方法method1, method2 
        // 在使用时必须用子类继承,并在子类中重写所有的抽象方法
        public abstract void method1();
        public abstract void method2();
}

子类(非抽象子类):

public class AbstractMethod_Zi extends AbstractMethod{
    //重写 
    @Override
    public void method1() {
        方法体
    }
	//@Override来检测是否重写成功,如果失败则会报错
    @Override
    public void method2() {
		方法体
    }
}

子类(抽象子类):

//在抽象子类中不需要重写抽象父类的抽象方法,但是抽象子类的子类必须重写所有的抽象方法
//也可以在抽象子类中新加入抽象方法和成员方法
public abstract class AbstractMethod_Zi_Abstract extends AbstractMethod{
    	//新加入的抽象方法
        public abstract void Method3();
        //新加入的成员方法
        public void CommonMethod4(){
            方法体
        }
}

子类重写(非抽象类):

public class AbstractMethod_ReWrite_Zi extends AbstractMethod_Zi_Abstract{
    @Override
    public void Method3() {
        方法体
    }

    @Override
    public void method1() {
		方法体
    }

    @Override
    public void method2() {
		方法体
    }
        
}

实现类:

public class AbstractMethod_Main {

    public static void main(String[] args) {
        AbstractMethod_ReWrite_Zi one = new AbstractMethod_ReWrite_Zi();
        one.method1();
        one.method2();
        one.method3();
        one.CommonMethod4();
    }
}

实现类运行结果

抽象类方法1
抽象类方法2
抽象类方法3
普通方法

注意事项:

1、抽象类不能直接创建对象,如果创建编译无法通过而会报错,只能创建非抽象子类的对象。

2、抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。

子类的构造方法中,有默认的super();来访问父类的无参数构造方法,如果父类中没有构造方法时,编译器会自动生成一个无参数的默认方法,如果写了有参数的构造方法时,则不会默认生成。此时,父类中没有无参数的构造方法,则编译器会报错。

3、抽象类中,不一定包含抽象方法,但是具有抽象方法的类一定是抽象类。

4、抽象类的非抽象子类,必须重写抽象父类中的所有抽象方法,否则,编译器会报错。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值