欢迎光临散文网 会员登陆 & 注册

抽象类必须要有抽象方法吗?

2022-08-31 12:13 作者:网星软件  | 我要投稿

1.什么是抽象类?

类--通过class关键字创建的java元素

抽象类---通过abstract class创建的java元素

判断一个java类是否是一个抽象类,看它是否使用abstract修饰。

2.为什么要有抽象类?

为了减少代码的重复编写,提供代码的重用性。

例如:坐车收费----公交车收费【全程1元】

                        ----出租车收费【每公里1元】

公交车 extends 汽车[收费功能]

出租车 extends 汽车[收费功能]

汽车提供了收费功能,但是没有具体的收费标准,具体的收费标准是由公交车/出租车根据自身的实际情况决定收费标准。

我们可以认为汽车是一个抽象类,它只提供功能,不给具体实现;

公交车/出租车都是汽车这个抽象类的子类,公交车/出租车就会从汽车的抽象类上继承功能,根据自身的实际情况实现这个功能。

抽象类为同一种类的事物提供功能,让它的子类根据自身的实际情况实现这个功能。

3.抽象类中可以有哪些元素?

类---实例变量,静态成员变量,构造方法,实例方法,静态方法

抽象类---实例变量,静态成员变量,构造方法,实例方法,静态方法,抽象方法

抽象方法---1.使用abstract关键字修饰

                  2.没有方法体“{}”

package com.wangxing.chouxiang1;

//抽象类--通过abstract class创建的java元素

public abstract class ChouXiangLei1 {

//实例变量

public  String  shili="实例变量";

//静态成员变量

public static String  staticbianliang="静态成员变量";

//构造方法

public ChouXiangLei1(){

System.out.println("抽象类中的构造方法");

}

//实例方法

public void  shiliMethod(){

System.out.println("抽象类中的实例方法");

}

//静态方法

public static void  staticMethod(){

System.out.println("抽象类中的静态方法");

}

//抽象方法

//1.使用abstract关键字修饰

//2.2.没有方法体“{}”

public abstract void  abstractMethod();

}

4.抽象类的具体用法

  1.抽象类不能通过new+构造方法的形式创建对象的

  2.抽象类中可以有抽象方法,可以一个抽象方法都没有

  3.当一个普通的java类继承一个抽象类,就需要实现抽象类提供的所有抽象方法也可以将这个普通的java类改成抽象类

  4.抽象类可以继承抽象类

  5.当某一个普通的java类中的方法参数是抽象类类型的时候,可以传递上转型对象,也可以是抽象类的子类对象。

5.卖水果实例

package com.wangxing.test1;

//水果抽象类

public abstract class ShuiGuo {

    //抽象方法

    public abstract void  chi();

}

package com.wangxing.test1;

//水果--西瓜

public class XiGua extends ShuiGuo{

    @Override

    public void chi() {

        System.out.println("用刀切开吃西瓜");

    }

}

package com.wangxing.test1;

//水果--苹果

public class PingGuo extends ShuiGuo{

    @Override

    public void chi() {

        System.out.println("削皮以后吃苹果");

    }

}

package com.wangxing.test1;

public class ShuiGuoDian {

    public static ShuiGuo  maiShuiGuo(String name){

        ShuiGuo  sg=null;

        if(name.equals("西瓜")){

            sg=new XiGua();

        }

        if(name.equals("苹果")){

            sg=new PingGuo();

        }

        if(name.equals("桃子")){

            sg=new TaoZi();

        }

        return sg;

    }

}

package com.wangxing.test1;

public class TestMain {

public  static  void  main(String args[]){

    ShuiGuo sg=ShuiGuoDian.maiShuiGuo("桃子");

    if(sg!=null){

        sg.chi();

    }else{

        System.out.println("没有买到想吃的水果");

    }

    }

}

总结:

抽象类就是使用abstract关键字修饰的java类。判断一个类是不是一个抽象类主要看class前面有没有abstract关键字,而不是看它有没有抽象方法。

抽象方法--1.abstract修饰

                 2.没有方法体

抽象类中可以有抽象方法,也可以一个抽象方法都没有。

普通的java类是不能有抽象方法的,能够包含抽象方法的java类一定是抽象类

抽象类必须要有抽象方法吗?的评论 (共 条)

分享到微博请遵守国家法律