博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7-5 jmu-Java-03面向对象基础-02-构造函数与初始化块 (20分)
阅读量:4034 次
发布时间:2019-05-24

本文共 2652 字,大约阅读时间需要 8 分钟。

1.定义一个Person类

属性:name(String)、gender(boolean)、age(int)、id(int) ,所有的变量必须为私有(private)。

无参构造函数:Person(), 功能:打印This is constructor 。
有参构造函数:Person(name, gender, age) ,功能:给属性赋值。
建议:使用Eclipse自动生成toString方法
2.定义类的初始化块

为Person类加入初始化块,在初始化块中对id属性赋值,并且要保证每次的值比上次创建的对象

的值+1。然后在下一行打印This is initialization block, id is … 其中…是id的值。
提示:可为Person类定义一个static属性来记录所创建的对象个数。
3.编写静态初始化块

打印This is static initialization block

4.编写main方法

首先输入n,代表要创建的对象数量。然后从控制台分别读取n行的name, gender, age, 并调用有参构造函数Person(name, age, gender)新建对象 。将创建好的n个对象逆序输出(即输出toString()方法)。使用无参构造函数新建一个Person对象,然后直接打印该对象。

思考

初始化类与对象有几种方法,构造函数、初始化块、静态初始化块。这三种方法执行的先后顺序是什么?各执行几次。

输入样例:

3

a 11 false
b 12 true
c 10 false

输出样例:

This is static initialization block

This is initialization block, id is 0
This is initialization block, id is 1
This is initialization block, id is 2
Person [name=c, age=10, gender=false, id=2]
Person [name=b, age=12, gender=true, id=1]
Person [name=a, age=11, gender=false, id=0]
This is initialization block, id is 3
This is constructor
null,0,false,3
Person [name=null, age=0, gender=false, id=3]

import java.util.Scanner;class Person {
private String name; private int age; private boolean gender; private int id = num; private static int num = 0; public Person() {
System.out.println("This is constructor "); } public Person(String name, int age, boolean gender) {
this.name = name; this.gender = gender; this.age = age; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } public boolean getGender() {
return gender; } public void setGender(boolean gender) {
this.gender = gender; } public int getAge() {
return age; } public void setAge(int age) {
this.age = age; } public int getId() {
return id; } public void setId(int id) {
this.id = id; } {
num++; System.out.println("This is initialization block, id is " + id); } @Override public String toString() {
return "Person [name=" + name + ", age=" + age + ", gender=" + gender + ", id=" + id + "]"; }}public class Main {
static {
System.out.println("This is static initialization block"); } public static void main(String[] args) {
Scanner in = new Scanner(System.in); int n = in.nextInt(); Person p[] = new Person[n]; for (int i = 0; i < p.length; i++) {
String a = in.next(); int b = in.nextInt(); boolean c = in.nextBoolean(); p[i] = new Person(a, b, c); } for (int i = n - 1; i >= 0; i--) {
System.out.println(p[i]); } Person p1 = new Person(); System.out.println(p1.getName() + "," + p1.getAge() + "," + p1.getGender() + "," + p1.getId()); System.out.println(p1); }}

转载地址:http://tqbdi.baihongyu.com/

你可能感兴趣的文章
Visual Studio 2010:C++0x新特性
查看>>
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
在C++中使用Lua
查看>>
C++中使用Mongo执行count和distinct运算
查看>>
一些socket的编程经验
查看>>
socket编程中select的使用
查看>>
关于AIS编码解码的两个小问题
查看>>
GitHub 万星推荐:黑客成长技术清单
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
昨夜今晨最大八卦终于坐实——人类首次直接探测到了引力波
查看>>
如何优雅、机智地和新公司谈薪水?
查看>>
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.147 - LeetCode1108
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>