Java的零基础入门:接口的实现(三)

简介: Java的零基础入门:接口的实现(三)


博主简介:

博客主页:Java知识分享博主

Java零基础入门专栏:Java零基础入门专栏

Java交流社区:飞鸟社区

欢迎阅读,如果文章对你有帮助点赞,支持一下!


文章目录


推荐阅读

Java零基础入门:概论(一)

Java零基础入门:实战教程(二)


问题描述:

一、定义接口Shape,包含如下方法:double getArea()方法和double getPerimeter()方法

  • 定义矩形类,实现上述接口。
  • 定义测试类。

定义Shape父类接口,Rectangle子类的接口实现,定义长宽,构造函数,实现方法,然后调用方法,输出面积和周长

package test8;
interface Shape{ //定义父类接口
  double getArea();
  double getPerimeter();
}
public class S1{
  public static void main(String[] args){
    Shape C1=new Rectangle(3.7,5.0);
    C1.getArea();
    C1.getPerimeter();
    System.out.println("矩形的面积:"+C1.getArea());
    System.out.println("矩形的周长:"+C1.getPerimeter());
  }
}
class Rectangle implements Shape {  //接口的实现
  public double length;
  public double height;
  Rectangle(double x,double y){  //构造函数
    length=x;
    height=y;
  }
  public double getArea(){  //方法
    return length*height;
  }
  public double getPerimeter(){
    return 2*(length+height);
  }
}

问题描述:

二、设计一个接口Student,该接口描述的是本科生(StudentG)和硕士生(StudentM)的公共方法:设置姓名,设置学号,输出所有信息,判断学生是否优秀。在该接口的基础上实现两个类StudentG和StudentM。

  • StudentG属性:姓名,学号,是否过CET4,上学年综合测评成绩。StudentG包含方法:构造函数,设置是否过CET4,设置上学年综合测评成绩,接口中定义的所有方法(本科生优秀的标准是过CET4,上学年综合测评成绩大于85分)。
  • StudentM属性:姓名,学号,是否过CET6,已发表文章篇数。StudentM包含方法:构造函数,设置是否过CET6,设置发表文章篇数,接口中定义的所有方法(硕士生优秀的标准是过CET6,已发表文章篇数是1).
  • 要求
    (1)实现上述的接口和类
    (2)(在main函数内)实例化四个对象:两个本科生,两个硕士生(至少各有一个优秀)
    (3)输出学生的所有属性信息。

定义Stu接口初始化,在该接口的基础上实现两个类StudentG和StudentM。姓名,学号,是否过CET4/CET6,上学年综合测评成绩, 发表文章篇数,调用abc()方法输出所有信息和调用youxiu()方法判断是否优秀

package test8;
public class Student01 {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    StudentG s1 =new StudentG("本科张三","21924011",true,96);
    StudentG s2 =new StudentG("本科李四","21924012",false,63);
    s1.youxiu();s2.youxiu();       //调用方法
    StudentM t1 = new StudentM("硕士小华","21924014",true,5);
    StudentM t2 = new StudentM("硕士小讯","21924013",false,0);
    t1.youxiu();t2.youxiu();
    s1.abc();s2.abc();
    t1.abc();t2.abc();
  }
}
interface Stu{ //定义接口名
  void abc();
  void youxiu();
}
class StudentG implements Stu{ //接口的实现
  String name;
  String id;
  boolean Cet4;
  int score;
  public StudentG(String n,String Id,boolean CET4,int s){  //构造函数,形参列表,通过实参传递参数赋值
    Cet4=CET4;
    score=s;
    name=n;
    id=Id;
  }
  public void abc(){               //被调用方法,输出所有信息
    System.out.println("姓名:"+name+" "+"学号:"+id+" "+
                  "是否过CET4:"+Cet4+" "+"上学年综合测评成绩:"+score
                         );
  }
  public void youxiu(){            //判断是否优秀
    if(Cet4&&score>85)
      System.out.println("姓名:"+name+"\t"+"优秀");
    else
      System.out.println("姓名:"+name+"\t"+"不优秀");
  }
}
class StudentM implements Stu{
  String name;
  String id;
  boolean Cet6;
  int wenzhang;
  public StudentM(String n,String ID,boolean CET6,int wz) {
    Cet6=CET6;
    wenzhang=wz;
    name=n;
    id=ID;
  }
  public void abc() {
    System.out.println("姓名:"+name+" "+"学号:"+id+" "+
              "是否过CET6:"+Cet6+" "+"已发表文章篇数:"+wenzhang
                 );
  }
  public void youxiu(){
    if(Cet6&&wenzhang>1)
      System.out.println("姓名:"+name+"\t"+"优秀");
    else
      System.out.println("姓名:"+name+"\t"+"不优秀");
  }
}


相关文章
|
19小时前
|
存储 安全 Java
Java一分钟之-Map接口与HashMap详解
【5月更文挑战第10天】Java集合框架中的`Map`接口用于存储唯一键值对,而`HashMap`是其快速实现,基于哈希表支持高效查找、添加和删除。本文介绍了`Map`的核心方法,如`put`、`get`和`remove`,以及`HashMap`的特性:快速访问、无序和非线程安全。讨论了键的唯一性、`equals()`和`hashCode()`的正确实现以及线程安全问题。通过示例展示了基本操作和自定义键的使用,强调理解这些概念对编写健壮代码的重要性。
4 0
|
19小时前
|
存储 安全 Java
Java一分钟之-集合框架进阶:Set接口与HashSet
【5月更文挑战第10天】本文介绍了Java集合框架中的`Set`接口和`HashSet`类。`Set`接口继承自`Collection`,特征是不允许重复元素,顺序不确定。`HashSet`是`Set`的实现,基于哈希表,提供快速添加、删除和查找操作,但无序且非线程安全。文章讨论了`HashSet`的特性、常见问题(如元素比较规则、非唯一性和线程安全性)以及如何避免这些问题,并提供了代码示例展示基本操作和自定义对象的使用。理解这些概念和注意事项能提升代码效率和可维护性。
8 0
|
19小时前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
6 0
|
21小时前
|
Java
【JAVA进阶篇教学】第四篇:JDK8中函数式接口
【JAVA进阶篇教学】第四篇:JDK8中函数式接口
|
1天前
|
Java
Java一分钟之-抽象类与接口的应用场景
【5月更文挑战第9天】Java中,抽象类和接口用于实现多态和抽象。抽象类不能实例化,提供部分实现和定义模板;接口包含无实现的抽象方法,用于定义行为规范和解耦合。选择时,关注行为用接口,部分实现用抽象类。注意抽象类的`final`和`static`方法、接口冲突等问题,明确设计目标,适度抽象,遵循接口设计原则,以提高代码质量。
10 1
|
1天前
|
Java
Java一分钟之-多态性:理解重写与接口
【5月更文挑战第9天】本文介绍了Java中的多态性,主要通过方法重写和接口实现。重写允许子类根据实际类型执行不同实现,关键点包括方法签名相同、访问权限不降低以及final、static和abstract方法不可重写。接口是抽象类型,包含抽象方法,提供另一种多态性实现。常见问题包括混淆重载与重写、不理解动态绑定以及滥用接口。为避免问题,需明确重写目的、合理设计接口,并在使用多态时注意类型检查。多态性是提升代码质量和灵活性的关键。
8 1
|
4天前
|
Java 开发者
在Java中,接口和超类在多态性中扮演着重要的角色
Java中的接口和超类支持多态性,接口作为规范,允许多继承和回调机制;超类提供基类,实现代码重用和方法重写,两者共同促进代码的灵活性和可维护性。
25 10
|
4天前
|
Java
接口在增强Java代码的灵活性方面起着关键作用
Java接口增强代码灵活性,实现多态性、解耦、多继承和扩展性。通过接口,类可隐藏实现细节,实现抽象化,促进模块化和维护性。接口定义方法,允许不同类实现,减少依赖,便于测试和修改。同时,接口提供多继承解决方案,使代码更具扩展性,易于添加新功能。
22 4
|
10天前
|
存储 Java
java IO接口(Input)用法
【5月更文挑战第1天】Java的`java.io`包包含多种输入输出类。此示例展示了如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着创建一个字节数组存储读取的数据,调用`read()`方法将文件内容填充至数组。然后将字节数组转换为字符串并打印,最后关闭输入流。注意,`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
20 2
|
10天前
|
NoSQL Java API
java一行代码实现RESTFul接口
Spring Data REST是构建在Spring Data之上的库,可自动将repository转换为REST服务,支持JPA、MongoDB、Neo4j、GemFire和Cassandra。无需手动创建Service和Controller层。要开始,需配置JPA数据源,创建实体类和Repository接口。快速实现REST接口,只需引入spring-boot-starter-data-rest Maven依赖,并在Repository接口上添加@RepositoryRestResource注解。