java 抽象类 引用变量_JAVA中抽象类的使用

抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。抽象类体现的就是一种模板模式的设计,抽象父类可以只定义需要使用的某些方法,把不能实现的某些部分抽象成抽象方法,留给其子类去实现。具体来说,抽象类的使用有以下几点要注意:

1.抽象方法和抽象类必须使用abstract来修饰,其中抽象方法不能有方法体。

2.抽象类不能被实例化。

3.抽象类可以包含成员变量,方法(普通方法或抽象方法),构造器(抽象类的构造器不能用于创建实例,主要是被其子类调用),初始化块,内部类(接口,枚举)这五种成分。

4.含有抽象方法的类只能定义成抽象类,而抽象类中可以没有抽象方法。

下面看具体的使用例子:

//先在文件Animal.java 中定义一个抽象类

packageanimal;public abstract classAnimal

{publicString name;publicAnimal(String name)

{this.name =name;

}public abstract voideat();public abstract voidmove();

}

然后分别定义三个子类来实现这个抽象父类:

packageanimal;public class Dog extendsAnimal

{publicDog(String name)

{super(name);

}public voideat()

{

System.out.println(name+ " eat meat and grass.");

}public voidmove()

{

System.out.println(name+ " move with legs.");

}

}packageanimal;public class Bird extendsAnimal

{publicBird(String name)

{super(name);

}public voideat()

{

System.out.println(name+ " eat insect.");

}public voidmove()

{

System.out.println(name+ " move with wings.");

}

}packageanimal;public class Fish extendsAnimal

{publicFish(String name)

{super(name);

}public voideat()

{

System.out.println(name+ " eat algae.");

}public voidmove()

{

System.out.println(name+ " move with tail.");

}

}

可以看到三个子类继承了父类的一个成员变量name, 并且分别实现了两个抽象方法 eat() 和 move(). 然后我们定义一个测试类,并运行结果:

packageanimal;public classSummary

{public static voidmain(String[] args)

{

Dog animal1= new Dog("Shepherd");

Bird animal2= new Bird("Sparrow");

Fish animal3= new Fish("carp");

System.out.println(animal1.name);

animal1.eat();

animal1.move();

System.out.println(animal2.name);

animal2.eat();

animal2.move();

System.out.println(animal3.name);

animal3.eat();

animal3.move();

}

}

运行结果如下:

Shepherd

Shepherd eat meat and grass.

Shepherd move with legs.

Sparrow

Sparrow eat insect.

Sparrow move with wings.

carp

carp eat algae.

carp move with tail.

那么初步的抽象类的使用就是这样了,具体的细节还需要去多看书多实践。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值