Java抽象类和抽象方法特点,抽象类和抽象方法是什么关系?

2020年12月16日10:52:55 评论 78

在面向对象中,所有的对象都是通过类来实现的,但是反过来,并不是所有的类都是用来描绘对象的。若一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象方法指一些只有方法声明,而没有具体方法体的方法。抽象方法一般存在于抽象类或接口中。下面我们一起来看看Java抽象类和抽象方法特点,抽象类和抽象方法的关系是什么吧。

Java抽象类和抽象方法特点,抽象类和抽象方法是什么关系?

一、抽象类

抽象是指从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃的思维过程。简单来说就是从具体事物中抽取出其中的一些具有概括性特点 的东西,举个例子,就比如我们初中物理会把一个运动的物体当成一个点,这其实就是把用点来代表物体的位置特征了。

1)抽象类的使用原则

(1)抽象方法必须为public或者protected,默认为public。
(2)抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理。
(3)抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类。
(4)子类如果不是抽象类,则必须重写抽象类之中的全部抽象方法。
(5)抽象类不能使用final关键字声明,因为抽象类必须有子类,而final定义的类不能有子类。

2)抽象类在应用的过程中需要注意的事项

(1)抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
(2)抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
(3)抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是不给出方法的具体功能。
(4)构造方法、类方法(用static修饰的方法)不能声明为抽象方法。
(5)抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

二、 抽象方法

抽象方法其实就是在抽象出这个问题有解决方法,但是呢并不能实际的告诉你该怎么做,所以就需要把每一个抽象方法都实例化,告诉程序每一步该怎么做,这样才能完成目标。

举个例子,比如说我有个抽象方法是吹小号,但是我并不知道五线谱,而且我也不知道指法,所以我得找到一个实例化的方法,告诉我每一步该怎么做,手应该放哪里,嘴该用多大的力气,这个就是抽象方法吹小号的实例化。

1)抽象方法的声明

声明一个抽象方法的语法格式如下:

abstract 返回类型 方法名([参数表]);

☆注意☆ 抽象方法没有定义方法体,方法名后面直接跟一个分号,而不是花括号。

2)抽象方法的实现

继承抽象类的子类必须重写父类的抽象方法,否则,该子类也必须声明为抽象类。最终,必须有子类实现父类的抽象方法,否则,从最初的父类到最终的子类都不能用来实例化对象。

三、抽象类和抽象方法的关系

有抽象方法的类,一定是抽象类;抽象类不一定有抽象方法。

当子类继承抽象类时,必须要将抽象类中的抽象方法全部实现(或者称为重写),否则子类依然是抽象类
因为子类是继承父类全部内容,所以也就相当于子类中也有了抽象方法,通过重写,可以将抽象方法覆盖。

 //定义一个抽象类
 abstract class student{
     //抽象方法
     public abstract void study();
     //非抽象方法
     public void work(){
         System.out.println("努力学习");
     }
 }
 class goodstudent extends student{
     //必须要实现抽象方法,否则该类依然是个抽象类
     public void study(){
         System.out.println("好学生不学习");
     }
 }
 public class Test {
     public static void main(String[] args) {
         goodstudent s=new goodstudent();
         //调用实现的方法
         s.study();
         //调用从抽象类中继承的非抽象方法
         s.work();
     }
 }

总结:不想让别的类重写的方法,用final;内容不确定的方法,用abstract(子类中用法不一样);希望共享的用static。如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类。

Java大学
  • 本文由 发表于 2020年12月16日10:52:55
  • 转载请务必保留本文链接:https://www.javadx.com/71.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: