java学习中,抽象类的使用(java 学习中的小记录)

java学习中,抽象类的使用(java 学习中的小记录)作者:王可利(Star·星星)

抽象类(abstract 修饰):

一个类如果被abstract修饰,那么这个类就叫抽象类。

子类继承父类,但是父类里面的方法,子类可以重写,但是重写的话,父类的方法跟子类的方法又不搭配,就产生了矛盾。

如:一个动物类:有一个用腿跑的方法。有一个鱼的类继承动物类,但是鱼不会用腿跑,所以不用重写父类的方法,就产生了矛盾。

所以需要一个方法强制子类重写父类中的某一个方法,就用到了abstract关键词修饰。

abstract 关键字的使用注意事项:

1.如果 abstract 修饰方法,那么这个方法就叫抽象方法。

2.抽象方法是没有主题的,是没有方法的具体实现(没有大括号)。如:abstract public void run();

3.如果一个方法没有主体(主体也叫方法体,也叫函数块、函数体 )(没有大括号),必须要用 abstract 来修饰。

4.如果一个类中有抽象方法,那么这个类就必须使用 abstract 来修饰。

5.一个非抽象类如果继承了一个抽象类,必须实现抽象类父类中的所有方法,重写里面的方法。

6.一个抽象类中是可以有非抽象的方法的,也可以存在构造方法的。构造方法的作用可以让子类能够初始化父类中的变量。

7.抽象类是不能创建对象的。原因:抽象类如果创建了对象的话,对象调用抽象方法的话是没有意义的,抽象方法是没有主体的。

8.抽象类中是可以不出现抽象方法的。

9.abstract 不能和那些关键字连用:

   1.private(私有的是不能重写的,但是抽象类是必须要重写的就矛盾了)

   2.static(静态修饰 可以直接类访问了,抽象类是针对对象的,所以不能)

   3.final (定义了就不能改了,抽象类是必须重写的,又不能改的话就矛盾了)

abstract 关键字的使用场景:

我们在描一个事物的时候吗,发现这个事物确实存在某种行为,但是这种行为又不具体,那么这个时候就可以抽取这种行为声明一个没有实现的行为方式。那么这种行为我们就叫做为抽象行为。就需要用到抽象类了。

 1 package study;
 2 
 3 abstract class Animal{
 4     String name;
 5     String color;
 6     
 7     abstract public void run() ;
 8 }
 9 class Dog extends Animal{
10     public void run(){
11         System.out.println(name+"跑得很快");
12     }
13 }
14 class Fish extends Animal{
15     //需要重写方法(没有强制重写,因为鱼不能跑,没退腿)
16     //应该需要重写,但是可以不重写,这样容易出问题
17     //想一个方法强制子类重写父类中的某一个方法
18     public void run(){
19         System.out.println(name+"游得很快");
20     }
21 }
22 
23 public class star {
24     public static void main(String[] args) {
25         Dog d = new Dog();
26         d.name = "猎狗";
27         Fish fish =  new Fish();
28         fish.name = "星星鱼";        
29         
30         d.run();//猎狗跑得很快
31         fish.run();//星星鱼游得很快
32     }
33 }
原文地址:https://www.cnblogs.com/StarKL/p/6133153.html