在JavaBook类中创建一个函数read(Book book) ,当传过来的参数对象是JavaBook对象的时候,打印"实际参数是JavaBook对象"。如果是MathBook对象,打印出"实际参数是MathBook",则打印"是其他书"。
时间: 2023-11-27 15:49:30 浏览: 54
可以在JavaBook类中创建一个静态方法 read(Book book) ,然后在方法中判断参数 book 的具体类型,从而打印出相应的信息。代码如下:
```java
public class JavaBook extends Book {
// 其他属性和方法
public static void read(Book book) {
if (book instanceof JavaBook) {
System.out.println("实际参数是JavaBook对象");
} else if (book instanceof MathBook) {
System.out.println("实际参数是MathBook对象");
} else {
System.out.println("是其他书");
}
}
}
```
在上述代码中,我们使用了 `instanceof` 关键字来判断参数对象的具体类型。如果参数对象是 JavaBook 类型的实例,就打印出 "实际参数是JavaBook对象";如果是 MathBook 类型的实例,就打印出 "实际参数是MathBook";否则就打印出 "是其他书"。
相关问题
6-20 Book类的设计
6-20 Book类的设计通常是一个关于面向对象编程中书籍模型的简单示例,它可能会包含基本的数据属性如书名(title)、作者(author)、出版年份(publishYear)和页数(pages),以及一些常见的行为方法,比如:
```java
public class Book {
// 数据成员
private String title;
private String author;
private int publishYear;
private int pages;
// 构造函数
public Book(String title, String author, int publishYear, int pages) {
this.title = title;
this.author = author;
this.publishYear = publishYear;
this.pages = pages;
}
// 获取和设置方法
public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; }
public String getAuthor() { return author; }
public void setAuthor(String author) { this.author = author; }
public int getPublishYear() { return publishYear; }
public void setPublishYear(int publishYear) { this.publishYear = publishYear; }
public int getPages() { return pages; }
public void setPages(int pages) { this.pages = pages; }
// 可能的方法:获取摘要、检查是否已读等
public String getSummary() { ... }
public boolean isRead() { ... } // 这里假设有一个默认值
}
```
这个设计允许创建各种具体的书籍实例,并通过标题、作者等信息区分它们。在实际应用中,可能会添加更多的特性和方法以满足需求。
#include "stdio.h" struct BOOK {char name[30]; double price; char issn[30]; }; void sort(struct BOOK a[] ,int n); void TestFunc(); void sort(struct BOOK a[] ,int n) /* 对n个结构变量按price成员排序:从大到小 */ { int i,j; struct BOOK t; /* t为用于交换的中间变量 */ /*********Begin**********/ /********** End **********/ } main() {struct BOOK aa[10]={{"C++",38.5,"97870654"},{"python",40.0,"97970658"},{"java",18.9,"97870655"}}; int n=3,i; sort(aa,n); for(i=0;i<n;i++) printf("%s %.2f %s\n",aa[i].name,aa[i].price,aa[i].issn); TestFunc(); } void TestFunc() /* 此函数无需改动 */ { FILE *IN,*OUT; int j; struct BOOK i[3]; IN=fopen("in.dat","r"); if(IN==NULL) {printf("Read File Error"); } OUT=fopen("out.dat","w"); if(OUT==NULL) {printf("Write File Error"); } for(j=0;j<3;j++) /* 读入,用于测试 */ { fscanf(IN,"%s%lf%s",i[j].name,&i[j].price,i[j].issn); } sort(i,3); for(j=0;j<3;j++) fprintf(OUT,"%s %.2f %s,",i[j].name,i[j].price,i[j].issn); fclose(IN); fclose(OUT); }补全该程序
补全程序如下:
```c
#include <stdio.h>
struct BOOK {
char name[30];
double price;
char issn[30];
};
void sort(struct BOOK a[], int n);
void TestFunc();
void sort(struct BOOK a[], int n) {
int i, j;
struct BOOK t; /* t为用于交换的中间变量 */
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (a[i].price < a[j].price) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}
int main() {
struct BOOK aa[10] = {{"C++", 38.5, "97870654"},
{"python", 40.0, "97970658"},
{"java", 18.9, "97870655"}};
int n = 3, i;
sort(aa, n);
for (i = 0; i < n; i++)
printf("%s %.2f %s\n", aa[i].name, aa[i].price, aa[i].issn);
TestFunc();
return 0;
}
void TestFunc() {
FILE *IN, *OUT;
int j;
struct BOOK i[3];
IN = fopen("in.dat", "r");
if (IN == NULL) {
printf("Read File Error");
}
OUT = fopen("out.dat", "w");
if (OUT == NULL) {
printf("Write File Error");
}
for (j = 0; j < 3; j++) /* 读入,用于测试 */
{
fscanf(IN, "%s%lf%s", i[j].name, &i[j].price, i[j].issn);
}
sort(i, 3);
for (j = 0; j < 3; j++)
fprintf(OUT, "%s %.2f %s,", i[j].name, i[j].price, i[j].issn);
fclose(IN);
fclose(OUT);
}
```
这是一个结构体数组的排序程序,按照结构体成员变量 price 的值从大到小排序。同时还包括了一个用于测试的函数 TestFunc,该函数从文件中读入数据,调用 sort 函数进行排序,然后将排序后的结果输出到另一个文件中。
阅读全文