抽象类——Java学习笔记

tech2022-08-06  138

抽象类

在面向对象中,一切事物都是对象,对象都是使用类来描述的,但是,当一个类中,没有足够的信息去描述一件具体的事物(对象)时,那么就要将这个类定义为抽象类。

定义:

抽象类需要abstract关键字声明

abstract class Shape{}

实现:

由一个子类继承抽象类,实现抽象类中的抽象方法(抽象类就是用来继承的),子类实现后,创建的子类对象才可以使用这些方法。

class Square extends Shape{ //要在其中实现抽象类中的所有抽象方法 }

特点:

抽象类中可以有构造方法,但是不能创建对象普通类中定义的属性和方法,都可以在抽象类中定义抽象类中可以存在抽象方法 抽象方法没有方法体只有方法的声明抽象方法定义:abstract 返回值类型 方法名 (参数列表); 抽象类中的抽象方法必须由子类实现,如果子类没有实现全部的抽象方法,那么子类也要定义为抽象类,再由子类的子类实现,以此类推一个抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类

实例:

//测试类 public class Test1 { public static void main(String[] args) { Rectangle rectangle = new Rectangle(10,20); rectangle.perimeter(); rectangle.area(); Circle2 circle = new Circle2(2); circle.perimeter(); circle.area(); } } //抽象类 abstract class Shape{ //有两个抽象方法 public abstract void perimeter(); public abstract void area(); } //子类继承抽象类 class Rectangle extends Shape{ int length; int width; public Rectangle(int length,int width){ this.length = length; this.width = width; } //实现抽象类中的两个抽象方法 public void perimeter(){ System.out.println("矩形的周长为:"+((length+width)*2)); } public void area(){ System.out.println("矩形的面积为:"+(length*width)); } } //继承抽象类,但是这个类中没有实现全部的抽象方法,所以也要定义为抽象类 abstract class Circle extends Shape{ int radius; //抽象类中也可以定义构造方法 public Circle(int radius){ this.radius = radius; } public void perimeter(){ System.out.println("圆的周长为:"+(2*3.14*radius)); } } //继承抽象类子类,继续实现未实现的抽象方法 class Circle2 extends Circle{ public Circle2(int radius) { super(radius); } //实现剩余的抽象方法 public void area(){ System.out.println("圆的面积为:"+(2*3.14*radius*radius)); } }
最新回复(0)