抽象类——abstract

(一)基础知识

@abstract
 * 1.产生条件?
 * 当定义一个类时,常常需要定义一些方法对数据信息进行操作,但有时这些方法的实现是无法确定的。
 * Java规定,用abstract关键字修饰的方法被称为抽象方法,定义时不写函数体(仅声明参数和返回值),
 * 同时,包含抽象方法的类也必须定义为抽象类,同样用abstract修饰
 * 2.特点:抽象类不能实例化出对象,只是一个提供父类的作用。
 * 3.抽象类的子类:子类必须为父类的所有抽象方法提供具体实现,否则子类依然是抽象类

(二)举个栗子

import java.util.*;
import java.lang.Math;
abstract class Shape{
	 public String color = "white";
	 public void sayColor() {				//抽象类中可以有具体方法
		 System.out.println("颜色是:"+color);
	 }
	 public abstract double getArea();		        //定义的抽象方法
}

class Circle extends Shape{
	public double radius;
	Circle(double radius){
		this.radius=radius;
	}
	Circle(){}
	public double getArea() {				//子类实现父类的抽象方法
		return Math.PI*radius*radius;
	}
}

class Rectangle extends Shape{
	public double length;
	public double width;
	public double getArea() {
		return length*width;
	}
}

public class abstract_demo {

	public static void main(String[] args) {
		//实例化出Rectangle对象并测试getArea()方法
		Rectangle r = new Rectangle();
		System.out.print("输入长方形的长和宽:");
		Scanner scan = new Scanner(System.in);
		r.length=scan.nextDouble();
		r.width=scan.nextDouble();
		System.out.println("长方形的面积为:"+r.getArea());
		
		//实例化出Circle对象并测试getArea()方法
		Circle c = new Circle();
		System.out.print("输入圆的半径:");
		c.radius=scan.nextDouble();
		System.out.println("圆的面积为:"+c.getArea());
		
		/*Shape shape = new Shape();   编译器报错不能实例化类型 Shape*/	
		 scan.close();
		}
}

 

发布了61 篇原创文章 · 获赞 61 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42475914/article/details/100755246