Java编程练习之抽象类与抽象方法

使用抽象类和抽象方法时,需要遵循以下原则:

1)在抽象类中,可以包含抽象方法,也可以不包含抽象方法,但是包含了抽象方法的类必须被定义为抽象类;

2)抽象类不能直接被实例化,即使抽象类中没有声明抽象方法,也不能被实例化;

3)抽象类被继承后,子类需要重写抽象类中所有的抽象方法;

4)如果继承抽象类的子类也被声明为抽象类,则可以不用重写子类中所有的抽象方法;

1.创建Shape(图形)类。该类中有一个计算面积的方法,圆形和矩形都继承自图形类,输出图形和矩形的面积。运行效果图:

父类:

package Zaria;
public abstract class Shape {//父类
    public double l;  //长度
    public double w; //宽度
    public double r; //半径
    public double PI;//π
    public double A; //面积
    public abstract double calculate(double l,double w);
}

圆形子类:

package Zaria;
import java.text.DecimalFormat;
public class Roundness extends Shape {
    public double calculate(double PI,double r){
         A=PI*r*r;
        DecimalFormat decimalFormat1 = new DecimalFormat("#0.##"); // 设置格式为保留两位小数
        String formattedNumber1 = decimalFormat1.format(A); // 将数字按指定格式转换成字符串
        System.out.println("圆形的面积是:"+formattedNumber1);
        return A;
    }
}

矩形子类:

package Zaria;
public class Rectangle extends Shape{
    public double calculate(double l,double w){
        A=l*w;
        System.out.println("矩形的面积是:"+A);
        return A;

    }

}

主类:

package Zaria;
public class Calculate_area {
    public static void main(String[] args){
        Shape shape=new Roundness();
        shape.r=2.6;
        shape.PI=3.14;
        System.out.println("r:"+shape.r);
        System.out.println("PI:"+shape.PI);
        shape.calculate(shape.PI,shape.r);
        shape=new Rectangle();
        shape.w=2;
        shape.l=2.6;
        System.out.println("l:"+shape.l);
        System.out.println("w:"+shape.w);
        shape.calculate(shape.l,shape.w); 
    }
}

2.创建工厂类,工厂类中有一个抽象的生产方法,创建汽车厂和鞋厂类,重写工厂类中的抽象生产方法,输出汽车厂生产的是汽车,鞋厂生产的是鞋。运行效果如下:

父类:

package Zaria;
public abstract class Factory {
    public String goods;//产品
    public abstract void product();
}

子类:

package Zaria;
public class Automobile_factory extends Factory{
    public void product(){
        System.out.println("汽车厂生产的是"+goods);
    }
}

子类:

package Zaria;
public class Shoe_factory extends Factory{
    public void product(){
        System.out.println("鞋厂生产的是"+goods);
    }
}

主类:

package Zaria;

public class ToProduct {

public static void main(String[] args){

Automobile_factory Af=new Automobile_factory();

Af.goods="汽车";

Af.product();

Shoe_factory Sf=new Shoe_factory();

Sf.goods="鞋";

Sf.product();

} }

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: Java中的接口和抽象类是面向对象编程中的重要概念。接口是一种规范,它定义了一组方法的签名,而不包含方法的实现。抽象类是一种特殊的类,它不能被实例化,只能被继承,并且可以包含抽象方法和具体方法。 在给定的引用中,通过定义接口和抽象类,实现了一个关于运动员和教练的继承关系。Athletes类和Coach类是子类,而Person类是超类,它们都具有姓名和年龄属性。Athletes类和Coach类都包含了抽象方法learn()和teach(),需要在子类中进行重写实现。 另外,引用中还给出了一个关于图形的代码示例。通过定义Triangle、Circle和Rectangle类,实现了计算图形面积和周长的功能。这些类之间通过继承和重写方法的方式建立了继承关系,并且使用了接口和抽象类的特性。 总结来说,接口和抽象类Java中实现多态和封装的重要工具,它们可以帮助我们更好地组织和设计代码。通过定义接口和抽象类,我们可以实现代码的重用和扩展性,提高代码的可维护性和可读性。 #### 引用[.reference_title] - *1* *3* [Java练习题——接口和抽象类综合题](https://blog.csdn.net/Alita233_/article/details/126715429)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Java的接口练习](https://blog.csdn.net/Sweethonor/article/details/127890323)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值