ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java入门期中复习(抽象类与接口代码练习)

2021-04-24 11:33:32  阅读:174  来源: 互联网

标签:Java di 子类 void class 期中 double 抽象类 public


题题练习

第一题:抽象类的基础使用

要求给小伙找对象,男孩子要求对象会说话和做饭
建立一个抽象类,表示不论是什么子类都要有这些功能
注意:
1.我在码代码的时候发现这个抽象类中要求可以使用抽象方法,也可以不适用,但是不适用会标绿
2.没有方法体,只有声明,类似构造一个框架,里面具体要说什么做什么需要后序根据子类补充
在这里插入图片描述
第二部分:构造一个子类表示是中国女孩会说你好以及会做水煮鱼
注意:
1.由于我构造的是非抽象子类,所以需要对父类进行重写
2. 需要继承子类,其中我习惯建立一个无参的构造函数
在这里插入图片描述
第三步:构造Us女朋友
在这里插入图片描述
与上述相同
第四步:构造该男生子类,进行调用上述子类
在这里插入图片描述
第五步:构造主函数
注意:
3. 定义的是引用抽象类的对象,但是指向的是子类的对象,因为抽象类是不允许使用new进行声明!!!!
4.
在这里插入图片描述
完整代码:

import java.awt.*;
import java.util.*;
abstract class Girlfriend{
    abstract void speak();
    abstract void cooking();
}
class ChinaGirl extends Girlfriend{
    public ChinaGirl(){

    }
    public void speak(){
        System.out.println("你好");

    }
    public void cooking(){
        System.out.println("水煮鱼");

    }
}
class Usgirl extends Girlfriend{
    public Usgirl(){

    }
    public void speak(){
        System.out.println("HELLO");

    }
    public void cooking(){
        System.out.println("Salad");

    }
}
class Boy  {
    Girlfriend friend;

    public Boy(){

    }
    public void setGirlfriend(Girlfriend f){
        friend=f;
    }
    public void getGirlfriend(){
        friend.cooking();
        friend.speak();
    }
}
public class Hello{
    public static void main(String args[]) {
        Girlfriend girl1=new ChinaGirl();
        Boy boy=new Boy();
        boy.setGirlfriend(girl1);
        boy.getGirlfriend();
        girl1=new Usgirl();

        boy.setGirlfriend(girl1);
        boy.getGirlfriend();
    }

}

第二题:面对抽象编程

根据我的理解,抽象类就是给一个框架,只注重于框架的构造,而不在乎具体的内容,就像地图,每个国家都有一个轮廓,那么就可以用抽象类进行定义这个轮廓属性,但是具体轮廓什么样子的是后序子类需要定义的任务,例如内部具有城市,那么也可以用抽象类进行定义城市属性,具体到底有多少个城市,具体如何分布的也是子类的事情
所谓面对抽象编程:就是该类不用面对具体的类,而是面对抽象类
现在我们编写一个程序,实现如下要求:
现在我们需要计算出各种立体图形的体积
分析:
很明显发现图形的体积大部分都和底面积与高有关,所以我们需要计算出该类图形的底面积以及得到高
而图形具体是柱状圆形的都是子类的问题了
所以首先进行构造抽象类
在这里插入图片描述

第二步:构建子类求矩形面积以及周长
在这里插入图片描述
第三步:建立图形中的一个柱体类为例,由于子类和父类构造的函数一致,子类继承了父类的而么有多余拓展,所以我们这里用子类定义di或者用子类定义di效果都是一样的。但是如果使用子类说明该底面积只能是这一类的,所以我们常常定义为父类,同时也可以调用子类的求面积方法
在这里插入图片描述
在这里插入图片描述

结果为4
上述过程存在问题,倘若用户要求你求三角形为底的就要更改很多步骤所以我们需要对程序进行修改

import java.awt.*;
import java.util.*;
abstract class TuXing{
    abstract double GetArea();
    abstract double GetPerimeter();
    public static final double PI=3.1415926;
}
class JuXing extends  TuXing{
    double l,w;
    public JuXing(double l, double w){
        this.l=l;
        this.w=w;
    }
    public JuXing(){

    }
    public  double GetArea(){
       return  l*w;
    }
    public double GetPerimeter(){
        return (l+w)*2;
    }
}
class Circle extends  TuXing{
    double r;
    public Circle(double r){
        this.r=r;

    }
    public Circle(){

    }
    public  double GetArea(){
        return  this.r*this.r*PI;
    }
    public double GetPerimeter(){
        return 2*this.r*PI;
    }
}
class ZhuTi{
    TuXing di;

    double h;
    public ZhuTi(){

    }
    public ZhuTi(TuXing di,double h){
        this.di=di;
        this.h=h;
    }
    public TuXing GetDi(){
        return di;
    }
    public void  setDi(TuXing di){
        this.di=di;
    }
    public double getV(){
        return di.GetArea()*h;
    }
    public double getC(){
        return di.GetPerimeter();
    }
}

public class Hello{
    public static void main(String args[]) {
      TuXing g;
      g=new JuXing(1,1);
      ZhuTi k=new ZhuTi(g,3);

     System.out.println(k.getV()+" "+k.getC());
        g=new Circle(2);
        k=new ZhuTi(g,3);

        System.out.println(k.getV()+" "+k.getC());

    }

}

题目三:接口的引入

设置机动车类,要求都有刹车功能,使用bus有收费功能,使用taxi有收费和空调功能
第一步:构造抽象类,定义刹车
在这里插入图片描述
第二步:构造接口构造收费和空调
在这里插入图片描述
第三步构造bus和taxi的类
在这里插入图片描述
第四步:构造主函数
在这里插入图片描述
总:

import java.awt.*;
import java.util.*;
abstract class function{
   abstract void brake();
}
interface MoneyFare{
    void charge();
}
interface Contro{
    void control();
}
class Bus extends function implements MoneyFare{
    void brake(){
        System.out.println("公交车正在刹车");
    }
        public void charge(){
            System.out.println("收费六块");
        }
}
class Taxi extends function implements MoneyFare, Contro{
    void brake(){
        System.out.println("出租车正在刹车");
    }
    public void charge(){
        System.out.println("收费三块");
    }
    public void control(){
        System.out.println("出租车打开空调");
    }
}
public class Hello{
    public static void main(String args[]) {
    Bus bus11=new Bus();
    Taxi buleTaxi=new Taxi();
   // MoneyFare fare;
     //   Contro tem;
      //  fare = bus11;
        bus11.brake();
        bus11.charge();
        //fare.charge();
        //fare =buleTaxi;
        buleTaxi.brake();
        buleTaxi.control();
        buleTaxi.charge();
    }

}

在这里插入代码片

标签:Java,di,子类,void,class,期中,double,抽象类,public
来源: https://blog.csdn.net/qq_46126118/article/details/116081871

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有