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

java之抽象类(abstract)

程序员文章站 2024-02-17 16:35:28
...

1.抽象类 用abstract修饰
  1)父类知道子类应该包含怎样的方法,但无法准确知道这些子类如何实现
  2)从多个具有相同特征的类中抽出一个抽象类,
  使用规则:
  1)abstract来定义抽象类
  2)abstrct定义抽象方法,只有声明,不许实现
  3)包含抽象方法的类是抽象类
  4) 抽象类可以有普通方法,也可以没有抽象方法 (即抽象方法是抽象类的必要条件)

demo:

java之抽象类(abstract)

 

父类:

public abstract class Shape {

	public abstract void perimeter();		//perimeter周长
	public abstract void area();			//area面积
	
}

子类1:

public class Rectangle extends Shape {

	public int a,b;
	@Override
	public void area() {
		// TODO Auto-generated method stub
		System.out.println("矩形的面积:" + a*b);
	}

	@Override
	public void perimeter() {
		// TODO Auto-generated method stub
		System.out.println("矩形的周长:" + (a+b)*2);
	}

}

子类2:

public class Circle extends Shape {

	public double pi = 3.14;
	public double r;
	@Override
	public void area() {
		// TODO Auto-generated method stub
		System.out.println("圆的面积:" + pi*r*r);
	}

	@Override
	public void perimeter() {
		// TODO Auto-generated method stub
		System.out.println("圆的周长:" + 2.0*pi*r);
	}

}

测试类:

import java.util.Scanner;

public class TestShape {

	public static void main(String[] args) {

		Scanner in = new Scanner(System.in);
		
		while(true) {
			Rectangle work1 = new Rectangle();
                        System.out.print("请输入矩形的长  && 宽:");
			work1.a = in.nextInt();
			work1.b = in.nextInt();
			work1.area();
			work1.perimeter();
                        System.out.println();
			
                        System.out.print("请输入圆的半径:");
			Circle work2 = new Circle();
			work2.r = in.nextDouble();
			work2.area();
			work2.perimeter();
                        System.out.println();
		}
		
	}

}

运行结果:

请输入矩形的长  && 宽:2 3
矩形的面积:6
矩形的周长:10

请输入圆的半径:6
圆的面积:113.03999999999999
圆的周长:37.68