一、今日学习内容
构造函数和析构函数、复制构造函数、内联成员函数、带默认形参值的成员函数、类的组合的多重应用:
1、设计一个用于人事管理的“人员”类。由于考虑到通用性,这里只抽象出所有类型人员都具有的属性:编号、性别、出生日期、身份证号等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。
1 //日期类:
2 import java.util.Scanner;
3 public class Date2 {
4 protected int year,month,day;
5 Date2(){}
6 Date2(int y,int m,int d){
7 year=y;
8 month=m;
9 day=d;
10 }
11 public void setDate() {
12 Scanner con=new Scanner(System.in);
13 year=con.nextInt();
14 month=con.nextInt();
15 day=con.nextInt();
16 }
17 void display() {
18 System.out.println(year+"年"+month+"月"+day+"日");
19 }
20 }
21 //人员类:
22 import java.util.*;
23 public class People2 {
24 private int num;
25 private char sex;
26 private Date2 birthday=new Date2();
27 private String ID;
28 People2(){}
29 People2(int n,char s,int y,int m,int d,String i){
30 num=n;
31 sex=s;
32 birthday.year=y;
33 birthday.month=m;
34 birthday.day=d;
35 ID=i;
36 }
37 public void input() {
38 System.out.println("基本信息:\n编号:");
39 Scanner con=new Scanner(System.in);
40 num=con.nextInt();
41 System.out.println("性别:");
42 sex=con.next().charAt(0);
43 System.out.println("出生日期:");
44 birthday.setDate();
45 System.out.println("身份证号:");
46 ID=con.next();
47 }
48 public void output() {
49 System.out.println("编号:"+num);
50 System.out.println("性别:"+sex);
51 System.out.print("出生日期:");
52 birthday.display();
53 System.out.print("身份证号:"+ID);
54 }
55 public static void main(String[] args) {
56 People2 x=new People2();
57 x.input();
58 x.output();
59 }
60 }
2、定义一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)对ages加上years,age()显示Tree对象的ages的值。
1 import java.util.Scanner;
2 public class Tree {
3 private int ages;
4 Tree(){}
5 Tree(int a){
6 ages=a;
7 }
8 public int grow(int years) {
9 return ages+years;
10 }
11 public void age() {
12 System.out.println("树龄为:"+ages);
13 }
14
15 public static void main(String[] args) {
16 Tree m=new Tree(10);
17 int n;
18 Scanner con=new Scanner(System.in);
19 n=con.nextInt();
20 m.age();
21 System.out.println("年之后树龄为:"+m.grow(n));
22 }
23 }
3、编写一个名为CPU的类,描述一个CPU的以下信息:时钟频率,最大不会超过3000MHZ;字长,可以是32位或64位;核数,可以是单核、双核或四核;是否支持超线程。各项信息要求使用位域来表示。
1 public class CPU {
2 private double clockrate;
3 private int wordsize;
4 private int heshu;
5 private boolean m;
6 CPU(double c,int w,int h,boolean n){
7 clockrate=c;
8 wordsize=w;
9 heshu=h;
10 m=n;
11 }
12 public void display() {
13 System.out.println("时钟频率为:"+clockrate+"MHz");
14 System.out.println("字长为:"+wordsize);
15 System.out.println("核数为:"+heshu);
16 if(m==true)
17 System.out.println("支持线程");
18 else
19 System.out.println("不支持线程");
20 }
21
22 public static void main(String[] args) {
23 CPU MyCPU=new CPU(2500,32,4,true);
24 MyCPU.display();
25 }
26 }
二、遇到的问题
字符、字符数组的输入输出不会。
三、明日计划
继续完成相关例题的验证。
