• JAVA_SE基础——44.抽象类的练习


    抽象类要注意的细节:

    1. 如果一个函数没有方法体,那么该函数必须要使用abstract修饰,把该函数修饰成抽象 的函数。。
    2. 如果一个类出现了抽象的函数,那么该类也必须 使用abstract修饰。
    3. 如果一个非抽象类继承了抽象类,那么必须要把抽象类的所有抽象方法全部实现。
    4. 抽象类可以存在非抽象方法,也可以存在抽象的方法.
    5. 抽象类可以不存在抽象方法的。 
    6. 抽象类是不能创建对象的。
    疑问:为什么抽象类不能创建对象呢?
    因为抽象类是存在抽象方法的,如果能让抽象类创建对象的话,那么使用抽象的对象
    调用抽象方法是没有任何意义的。

    7. 抽象类是存在构造函数的,其构造函数是提供给子类创建对象的时候初始化父类的属性的。


    练习:使用抽象类计算一个矩形与圆形的面积。

    测试代码1:(注释已经解释的很清楚了,所以我就不对代码做一一讲解了,)

    package day09;
    /*
      需求: 描述一个图形、圆形、 矩形三个类。不管哪种图形都会具备计算面积
    与周长的行为,但是每种图形计算的方式不一致而已。
    */
    //定义图形抽象类
    abstract class Figure{
    	//定义带参构造方法
    	Figure(String name){
    		this.name = name ;
    	}
    	//定义String型的成员变量name
    	String name ;
    	//定义抽象方法getArea()
    	public abstract void getArea();
    	//定义抽象方法getPerimeter()
    	public abstract void getPerimeter();
    	
    }
    //定义圆(circle)类  并 继承 图形(Figure)类
    class circle extends Figure{
    	//定义double型的成员变量r 
    	double r ; 
    	//定义double型的常量 PI ,并赋值3.14           
    	static final double PI = 3.14 ; 
    	//定义带参构造方法
    	circle(String name,double r){
    		super(name);
    		this.r = r ;
    	}
    	//实现抽象方法getArea() 
    	//定义计算圆的面积的方法
    	public void getArea(){
    		System.out.println(name+"的面积是"+PI*r*r);
    	}
    	//实现抽象方法getPerimeter() 
    	//定义计算圆的周长的方法
    	public void getPerimeter(){
    		System.out.println(name+"的周长是"+2*PI*r);	
    	}
    }
    //定义矩形(rectangle)类  并 继承 图形(Figure)类
    class rectangle extends Figure{
    	//定义int型成员变量high
    	int high ;
    	//定义int型成员变量length
    	int length ;
    	//定义带参构造方法
    	rectangle(String name,int high,int length){
    		super(name);
    		this.high = high ; 
    		this.length = length ; 
    	}
    	//实现抽象方法getArea() 
    	//定义计算矩形的面积的方法
    	public void getArea(){
    		System.out.println(name+"的面积是"+high*length);
    	}
    	//实现抽象方法getPerimeter() 
    	//定义计算矩形的周长的方法
    	public void getPerimeter(){
    		System.out.println(name+"的周长是"+2*(high+length));	
    	}
    }
    //定义测试类Demo1
    public class Demo1 {
    	//程序入口
    	public static void main(String[] agrs){
    		//创建circle类的实例对象,并赋值半径r=3     实例对象: 为对象创建空间并为其赋值  
    		circle c = new circle("圆形",3);
    		//调用计算圆面积的方法
    		c.getArea();
    		//调用计算圆周长的方法
    		c.getPerimeter() ;
    		//创建rectangle类的实例对象,并赋值宽(high=2)长(length=4)    
    		rectangle r = new rectangle("矩形",2,4) ; 
    		//调用计算矩形面积的方法
    		r.getArea();
    		//调用计算矩形周长的方法
    		r.getPerimeter();
    	}
    }

    运行结果:



    交流学习企鹅:654249738


  • 相关阅读:
    浅析电商防止恶意下单
    Dubbo与Hadoop RPC的区别
    中秋福利 | 10本技术图书(编程语言、数据分析等)免费送
    IOS渠道追踪方式
    数据迁移的应用场景与解决方案Hamal
    JVM锁实现探究2:synchronized深探
    网页设计简史看设计&代码“隔膜”
    知物由学 | 你真的了解网络安全吗?
    一行代码搞定Dubbo接口调用
    测试周期内测试进度报告规范
  • 原文地址:https://www.cnblogs.com/Jhaiha0/p/8465299.html
Copyright © 2020-2023  润新知