欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中的抽象类介绍

程序员文章站 2022-07-09 19:16:07
Java抽象类当我们在编写一个类时,常常会为该类定义一些方法,这些方法用来描述该类的行为方式,那么这些方法都有具体的方法体。但是在某些情况下,某个父类只知道其子类应该包含哪些方法,但无法准确的具体描述。当我们在定义一个图形时,这个类中提供了计算周长的算法,但是图形计算周长的方法,不一样,所以父类无法准确的知道其子类计算周长的方法。抽象正是解决这个问题的。抽象类和抽象方法抽象方法和抽象类都必须使用abstract修饰符来定义,有抽象方法的类只能定义成抽象类,抽象类里可以没有抽象方法。抽象方法和抽象...

Java抽象类

当我们在编写一个类时,常常会为该类定义一些方法,这些方法用来描述该类的行为方式,那么这些方法都有具体的方法体。但是在某些情况下,某个父类只知道其子类应该包含哪些方法,但无法准确的具体描述。当我们在定义一个图形时,这个类中提供了计算周长的算法,但是图形计算周长的方法,不一样,所以父类无法准确的知道其子类计算周长的方法。抽象正是解决这个问题的。

  • 抽象类和抽象方法
    抽象方法和抽象类都必须使用abstract修饰符来定义,有抽象方法的类只能定义成抽象类,抽象类里可以没有抽象方法。
    抽象方法和抽象类必须遵循以下原则:
    1.抽象类和抽象方法必须使用abstract关键字来修饰,抽象方法体中不能有方法体。
    2.抽象类不能被实例化,无法用new关键字来调用抽象类的构造器创建抽象类的实例。即使抽象类中不包含抽象方法,这个抽象方法也不能被实例化。
    3.抽象类中可以包含成员变量、方法、构造器、初始化代码块、内部类5种成分。抽象类的构造器不用于创建实例变量,主要是用于被其子类调用。
    4.含有抽象方法的类只能被定义成抽象类。

  • 定义抽象方法
    定义抽象方法只要在普通方法上增加abstract修饰,并把普通方法的方法体全部去掉,并且在方法之后增加分号即可。

abstract public class AbstractTest { //定义抽象方法 public abstract void fly(); public abstract int i = 1;//错误 //abstract不能用于修饰类方法 public abstract static void sleep(); //abstract不能用于修饰final类型的方法 public abstract final void breath(); } 

abstract 不能用于修饰成员变量。不能用于修饰局部变量。即没有抽象成员变量等说法。abstract也不能用于修饰构造器,没有抽象构造器,抽象类里定义的构造器只能是普通构造器。
abstract 不能用于修饰static方法,即通过该类去调用该方法,但如果该方法被定义成抽象方法,则导致通过该类调用该方法是出现错误(调用了一个没有方法体的方法,肯定会出错,所以不能定义)。
abstract不能用于修饰final的方法,该方法用了final之后就是一个不能被重写,而abstract修饰的方法,必须重写。
下面我们实现以下抽象类

//定义一个抽象类,计算面积 abstract class Shape { public Shape(){ } public abstract double findArea (); } //继承抽象类,实现一个圆的面积计算的方法 public class RealAbstract extends Shape { private double redius; public double getRedius() { return redius; } public void setRedius(double redius) { this.redius = redius; } @Override public double findArea() { return Math.PI * redius * redius; } public static void main(String[] args) { RealAbstract realAbstract = new RealAbstract(); //设置圆的半径 realAbstract.setRedius(5.6); //计算圆的面积 System.out.println(realAbstract.findArea()); } } 

本文地址:https://blog.csdn.net/m0_46189068/article/details/108034584

相关标签: 抽象类 java