第七章课后作业

创建一个球员类,并且该类最多只允许创建十一个对象。提示利用 static 和 封装性来完成。 [必做题]
类的说明:


image.png

package bao;

public class kehouti1 {
// 1、创建一个球员类,并且该类最多只允许创建十一个对象。
// 提示利用 static 和 封装性来完成。 [必做题]
public static void main(String[] args) {
for(int i=1;i<13;i++) {
Players.create();
}
}
}
class Players{
static int sum;
Players(){}
static Players create() {
Players p = null;
if(sum++<11) {
p=new Players();
System.out.println("创建了第一个对象");
}else {
System.out.println("创建错误");
}
return p;
}
}
—————————————————————————————

第二种方法

package diqizhang.diqizhang;

public class Players {
private static int sum;
private Players(){}
public static Players create(){
sum = 1;
Players p = null;
while(sum<=11){
p = new Players();
sum++;
System.out.println("创建了一个对象");
}
System.out.println("对不起,已经创建了11个对象。不能再创建对象了");
return p;
}
public static void main(String[] args) {
//对象的创建
Players p=new Players();
p.create();
}
}
————————————————————

第三种方法
package com.neusoft.chapter07;

public class HWBZ01 {
public static void main(String[] args) {
while(true){
if(Players.create() != null){
System.out.println("创建了"+Players.getSum()+"号球员");
}else{
System.out.println("您已经创建了11个球员,不能再继续下去啦");
break;
}
}
}

}
class Players{
private static int sum;
public static int getSum(){
return sum;
}
private Players(){

}
public static Players create(){
    Players p = null;
    if(sum<11){
        sum++;
        p = new Players();
    }
    return p;
    
}

}

==========================================================================
package bao;

public class kehouti2 {
// 2、设计2个类,要求如下: [必做题]
// 2.1 定义一个汽车类Vehicle,
// 2.1.1 属性包括:汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型)。
// 2.1.2 至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。
// 2.1.3 为属性提供访问器方法。注意:汽车品牌一旦初始化之后不能修改。
// 2.1.4 定义一个一般方法run(),用打印语句描述汽车奔跑的功能
// 2.1.5 在main方法中创建一个品牌为“benz”、颜色为“black”的汽车。
// 2.2 定义一个Vehicle类的子类轿车类Car,要求如下:
// 2.2.1 轿车有自己的属性载人数loader(int 类型)。
// 2.2.2 提供该类初始化属性的构造方法。
// 2.2.3 重新定义run(),用打印语句描述轿车奔跑的功能。
// 2.2.4 在main方法中创建一个品牌为“Honda”、颜色为“red”,载人数为2人的轿车。
===========================================

第一种方法

package diqizhang.diqizhang;

public class Vehicle {
// 定义一个汽车类Vehicle,要求如下:
// (a)属性包括:汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型)。
// (b)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。
// (c)为属性提供访问器方法。注意:汽车品牌一旦初始化之后不能修改。
// (d)定义一个一般方法run(),用打印语句描述汽车奔跑的功能
// 定义测试类VehicleTest,在其main方法中创建一个品牌为“benz”、颜色为“black”的汽车。
public static void main(String[] args) {
Vehicle v=new Vehicle();
v.run();
Car car =new Car("honda","red",2);
car.run();
}
private String brand;
private String color;
private double speed;
Vehicle(){
this.brand="benz";
this.color="black";
}
Vehicle(String brand,String color){
this.brand = brand;
this.color = color;
speed = 0;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getSpeed() {
return speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}

public void run(){
    System.out.println(getColor()+"的"+getBrand()+"的速度是"+getSpeed());
}
public String getBrand() {
    return brand;
}

}
// 定义一个Vehicle类的子类轿车类Car,要求如下:
// (a)轿车有自己的属性载人数loader(int 类型)。
// (b)提供该类初始化属性的构造方法。
// (c)重新定义run(),用打印语句描述轿车奔跑的功能。
// (d)定义测试类Test,在其main方法中创建一个品牌为“Honda”、颜色为“red”,载人数为2人的轿车。

class Car extends Vehicle {
int loader;
Car(){}
Car(String brand,String color,int loader){
super(brand, color);
this.loader = loader;
}

public void run(){
    System.out.println(getColor()+"的"+getBrand()+"载车人数是:"+loader);
}
    }

第二种方法

package chongxie;

public class HWBZ02 {
public static void main(String[] args) {
Vechicle v=new Vechicle("benz", "白色");
v.run();
Car1 c=new Car1("honda", "红色", 2);
c.run();
}
}
class Vechicle{
private String brand;
private String color;
private double speed;
public String getBrand() {
return brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getSpeed() {
return speed;
}
public void setSpeed(double speed) {
this.speed += speed;
}
public Vechicle(String brand, String color) {
super();
this.brand = brand;
this.color = color;
this.speed=0;
}
public void run(){
while(this.getSpeed()<100){
this.setSpeed(10);
System.out.println(this.getColor()+"色的"+this.getBrand()+"牌的以"+this.getSpeed()+"嗷嗷地跑");
}
}

}
class Car1 extends Vechicle{
private int loader;

public int getLoader() {
    return loader;
}

public void setLoader(int loader) {
    this.loader = loader;
}

public Car1(String brand, String color, int loader) {
    super(brand, color);
    this.loader = loader;
}

@Override
public void run() {
    while(this.getSpeed()<100){
        this.setSpeed(10);
        System.out.println(this.getColor()+"色的"+this.getBrand()+"牌的载着"+loader+"人"+this.getSpeed()+"嗷嗷地跑");
    }
}

}


第三种方法

    public static void main(String[] args) {
        Vehicle vh=new Vehicle("benz","black");
        vh.run();
        Car car=new Car(2,"Hongda","red",0.0);
        car.run();
    }
}
class Car extends Vehicle{
    int loader;
    Car(int loader, String brand,String color,double speed){
        super(brand,color);
        this.loader=loader; 
    }
    void run() {
        System.out.println("载车人数"+this.loader+"品牌是"+this.brand+"颜色是"+this.color+"速度是"+this.speed);
    }
    
}
class Vehicle{
    String brand;
    String color;
    double speed;
    public String getBrand() {
        return brand;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public double getSpeed() {
        return speed;
    }
    public void setSpeed(double speed) {
        this.speed = speed;
    }
    
    Vehicle(String brand,String color){
        this.brand=brand;
        this.color=color;
        this.speed=0;
    }
    void run() {
        System.out.println("品牌是"+this.brand+"颜色是"+this.color+"速度是"+this.speed);
    }
}

========================================================================
package bao;

public class kehouti3 {
// 3、设计四个类,分别如下: [必做题]
// 3.1 设计Shape表示图形类,有面积属性area、周长属性per,颜色属性color,有两个构造方法(一个是默认的、一个是为颜色赋值的),还有3个抽象方法,
// 分别是:getArea计算面积、getPer计算周长、showAll输出所有信息,还有一个求颜色的方法getColor。
// 3.2 设计 2个子类:
// 3.2.1 Rectangle表示矩形类,增加两个属性,Width表示长度、height表示宽度,重写getPer、getArea和showAll三个方法,另外又增加一个构造方法
// (一个是默认的、一个是为高度、宽度、颜色赋值的)。
// 3.2.2 Circle表示圆类,增加1个属性,radius表示半径,重写getPer、getArea和showAll三个方法,另外又增加两个构造方法(为半径、颜色赋值的)。
// 3.3 测试类中,在main方法中,声明创建每个子类的对象,并调用2个子类的showAll方法。


第一种方法

package diqizhang.diqizhang;

public class PolyDemo {

// (3)一个测试类PolyDemo,在main方法中,声明创建每个子类的对象,并调用2个子类的showAll方法。
public static void main(String[] args) {
Rectangle r = new Rectangle(1,2,'蓝');
Circle c = new Circle(1.2,'红');
r.showAll();
System.out.println("-----------------");
c.showAll();
System.out.println("-----------------");
}

}
// 设计四个类,分别是:
// (1)Shape表示图形类,有面积属性area、周长属性per,颜色属性color,有两个构造方法
// (一个是默认的、一个是为颜色赋值的),还有3个抽象方法,
// 分别是:getArea计算面积、getPer计算周长、showAll输出所有信息,还有一个求颜色的方法getColor。

abstract class Shape {
double area;
double per;
char color;
Shape(){

}
Shape(char color){
    this.color = color;
}

public abstract double getArea();
public abstract double getPer();
public abstract void showAll();

public char getColor(){
    return color;
}

}
// (2)2个子类:1)Rectangle表示矩形类,增加两个属性,Width表示长度、height表示宽度,
// 重写getPer、getArea和showAll三个方法,另外又增加一个构造方法(一个是默认的、一个是为高度、宽度、颜色赋值的)。
class Rectangle extends Shape {
double width;
double height;

Rectangle(){
}

Rectangle(double width, double height,char color){
    super(color);
    this.width = width;
    this.height = height;
}
@Override
public double getArea() {
    area = width*height;
    return area;
}

@Override
public double getPer() {
    per = 2*(width+height);
    return per;
}

@Override
public void showAll() {
    System.out.println("长:"+width);
    System.out.println("宽:"+height);
    System.out.println("面积:"+getArea());
    System.out.println("周长:"+getPer());
    System.out.println("颜色:"+getColor());
}

}
//2)Circle表示圆类,增加1个属性,radius表示半径,重写getPer、getArea和showAll三个方法,
//另外又增加两个构造方法(为半径、颜色赋值的)。
class Circle extends Shape {
final double pi = 3.14;
double radius;
Circle(){
}
Circle(double radius,char color){
super(color);
this.radius = radius;
}
@Override
public double getArea() {
area = piradiusradius;
return area;
}

@Override
public double getPer() {
    per = 2*pi*radius;
    return per;
}

@Override
public void showAll() {
    System.out.println("半径:"+radius);
    System.out.println("面积:"+getArea());
    System.out.println("周长:"+getPer());
    System.out.println("颜色:"+getColor());

 }

}

第二种方法


利用接口实现动态的创建对象:

(1)创建4个类

1苹果

2香蕉

3葡萄

4园丁

(2)在三种水果的构造方法中打印一句话.

以苹果类为例

class apple

{

public apple()

{

System.out.println(“创建了一个苹果类的对象”);

}

}

(3)类图如下:

[图片上传失败...(image-9c9a83-1555327578488)]

(4)要求从控制台输入一个字符串,根据字符串的值来判断创建三种水果中哪个类的对象。

运行结果如图:

[图片上传失败...(image-678786-1555327578488)]

答案

package bao;

import java.util.Scanner;

public class kehousi {
public static void main(String[] args) {
while(true) {
Gardener g=new Gardener();
g.creat();
}

}

}

abstract interface Fruit {

}

class Apple implements Fruit {
Apple() {
System.out.println("创建了一个苹果类的对象");
}
}

class Banana implements Fruit {
Banana() {
System.out.println("创建了一个香蕉类的对象");
}
}

class Putao implements Fruit {
Putao() {
System.out.println("创建了一个葡萄类的对象");
}
}

class Gardener {
public Fruit creat() {
Fruit f = null;
Scanner input = new Scanner(System.in);
String name = input.next();
if (name.equals("苹果")) {
f = new Apple();
} else if (name.equals("香蕉")) {
f = new Banana();
} else if (name.equals("葡萄")) {
f = new Putao();
} else {
System.out.println("不会种");
}
return f;
}
}

编写三个系别的学生类:英语系,计算机系,文学系(要求通过继承学生类)各系有以下成绩:
英语系: 演讲,期末考试,期中考试;
计算机系:操作能力,英语写作,期中考试,期末考试;
文学系: 演讲,作品,期末考试,期中考试;
各系总分评测标准:
英语系: 演讲 50%
期末考试 25%
期中考试 25%
计算机系: 操作能力 40%
英语写作 20%
期末考试 20%
期中考试 20%
文学系: 演讲 35%
作品 35%
期末考试 15%
期中考试 15%
定义一个可容纳5个学生的学生类数组,使用随机数给该数组装入各系学生的对象,然后按如下格式输出数组中的信息:
学号:XXXXXXXX 姓名:XXX 性别:X 年龄:XX 综合成绩:XX

package bao;

import java.lang.Math;
import java.math.BigDecimal;

public class kehou5 {
    public static void main(String[] args) {
        String sex;
        Student[] a = new Student[5];
        for (int i = 0; i < a.length; i++) {
            sex = "男";
            if (Math.random() < 0.5) {
                sex = "女";
            }
            if (Math.random() * 3 > 2) {

                a[i] = new English((int) (Math.random() * 1000) + " ", (int) (Math.random() * 1000000) + " ", sex,
                        (int) ((Math.random() + 0.1) * 100), (Math.random() + 1) * 100, (Math.random() + 1) * 100,
                        (Math.random() + 1) * 100);

            } else if (Math.random() * 3 > 1) {
                a[i] = new Computer((int) (Math.random() * 1000) + " ", (int) (Math.random() * 1000000) + " ", sex,
                        (int) ((Math.random() + 0.1) * 100), (Math.random() + 1) * 100, (Math.random() + 1) * 100,
                        (Math.random() + 1) * 100, (Math.random() + 1) * 100);

            } else {

                a[i] = new Literature((int) (Math.random() * 1000) + " ", (int) (Math.random() * 1000000) + " ", sex,
                        (int) ((Math.random() + 0.1) * 100), (Math.random() + 1) * 100, (Math.random() + 1) * 100,
                        (Math.random() + 1) * 100, (Math.random() + 1) * 100);
            }
            a[i].show();
        }

    }
}

class Literature extends Student {
    double speekScore;
    double composition;

    public Literature(String id, String name, String sex, int age, double qzscore, double qmscore, double speekScore,
            double composition) {
        super(id, name, age, sex, qzscore, qmscore);
        this.speekScore = speekScore;
        this.composition = composition;
    }

    @Override
    public double getScore() {
        double f = speekScore * 0.35 + composition * 0.35 + qmscore * 0.15 + qzscore * 0.15;
        BigDecimal b = new BigDecimal(f);
        double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        return f1;
    }

}

class Computer extends Student {
    double makeScore;
    double engScore;

    public Computer() {
    }

    public Computer(String id, String name, String sex, int age, double qzscore, double qmscore, double makeScore,
            double engScore) {
        super(id, name, age, sex, qzscore, qmscore);
        this.makeScore = makeScore;
        this.engScore = engScore;
    }

    public double getScore() {
        double f = makeScore * 0.4 + engScore * 0.2 + qmscore * 0.2 + qzscore * 0.2;
        BigDecimal b = new BigDecimal(f);
        double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        return f1;
    }

}

class English extends Student {
    double speekScore;

    public English() {
    }

    public English(String id, String name, String sex, int age, double qzscore, double qmscore, double speekScore) {
        super(id, name, age, sex, qzscore, qmscore);
        this.speekScore = speekScore;
    }

    @Override
    public double getScore() {
        double f = speekScore * 0.5 + qmscore * 0.25 + qzscore * 0.25;
        BigDecimal b = new BigDecimal(f);
        double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        return f1;
    }
}

abstract class Student {
    String id;
    String name;
    int age;
    String sex;
    double qzscore;// 期中考试
    double qmscore;// 期末考试

    public Student(String id, String name, int age, String sex, double qzscore, double qmscore) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.qzscore = qzscore;
        this.qmscore = qmscore;
    }

    Student() {
    }

    public abstract double getScore();// 获得综合成绩

    public void show() {
        System.out.println("学号:" + id + "姓名" + name + "性别:" + sex + "年龄:" + age + "综合成绩:" + getScore());
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,961评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,444评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,009评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,082评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,101评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,271评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,738评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,395评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,539评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,434评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,481评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,160评论 3 317
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,749评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,816评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,038评论 1 256
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,548评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,140评论 2 341

推荐阅读更多精彩内容