JAVA类与对象作业——动手动脑以及课后实验性问题
一:
1、源代码
//MAO2015.10.6
//foo
class Foo
{
int value;
public Foo(int initValue)
{
value = initValue;
}
}
public class Test2
{
public static void main(String[] args)
{
Foo obj1 = new Foo(2);
}
}
2、截图

3、总结
如果一个类提供自定义的构造方法,导致系统不再提供默认构造方法。
二:
1、源代码
//mao2015.10.16
//初始化
class InitializeBlockClass
{
{
field = 200;
}
public int field = 100;
public InitializeBlockClass(int value)
{
this.field = value;
}
public InitializeBlockClass()
{
}
}
public class Test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
InitializeBlockClass obj = new InitializeBlockClass();
System.out.println(obj.field);
obj = new InitializeBlockClass(300);
System.out.println(obj.field);
}
}
2、结果截图

3、总结Java字段初始化规律
首先执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。其次,执行类的构造函数
类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。
三:
1、 源码
//mao2015.10.17
//静态初始化块的执行顺序
class Root
{
Static
{
System.out.println("Root的静态初始化块");
}
{
System.out.println("Root的普通初始化块");
}
public Root()
{
System.out.println("Root的无参数的构造器");
}
}
class Mid extends Root
{
Static
{
System.out.println("Mid的静态初始化块");
}
{
System.out.println("Mid的普通初始化块");
}
public Mid()
{
System.out.println("Mid的无参数的构造器");
}
public Mid(String msg)
{
//通过this调用同一类中重载的构造器
this();
System.out.println("Mid的带参数构造器,其参数值:" + msg);
}
}
class Leaf extends Mid
{
Static
{
System.out.println("Leaf的静态初始化块");
}
{
System.out.println("Leaf的普通初始化块");
}
public Leaf()
{
//通过super调用父类中有一个字符串参数的构造器
super("Java初始化顺序演示");
System.out.println("执行Leaf的构造器");
}
}
public class TestStaticInitializeBlock
{
public static void main(String[] args)
{
new Leaf();
}
}
2、结果

3、总结出“静态初始化块的执行顺序”
静态初始化块只执行一次。创建子类型的对象时,也会导致父类型的静态初始化块的执行。
四:
静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?
请编写代码验证你的想法。
1、源码
//mao2015.10.17
//调用
class Use
{
static int a = 1;
int b = 2;
}
public class TestStatics {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Use.a);
//System.out.println(Use.b);报错
Use use = new Use();
System.out.println(use.b);
}
}
2、结果

3、 结论
System.out.println(Use.a);
//System.out.println(Use.b);报错
五:
使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。
1、源码
//mao2015.10.17
//跟踪某个类所创建对象的个数
class Count
{
static int i = 0;
public Count()
{
i++;
}
void getI()
{
System.out.println("已创建 "+i+"个");
}
}
public class TestCount {
public static void main(String[] args) {
// TODO Auto-generated method stub
Count count = new Count();
count.getI();
}
}
2、结果

3、 总结
每创建一次,就会使用一次构造函数,所以用构造函数来计数。
JAVA类与对象作业——动手动脑以及课后实验性问题的更多相关文章
- JAVA 接口与继承作业——动手动脑以及课后实验性问题
一.继承条件下的构造方法调用 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构 ...
- JAVA 多态和异常处理作业——动手动脑以及课后实验性问题
1. 阅读以下代码(CatchWho.java),写出程序运行结果: 1) 源代码 public class CatchWho { public static void main(String[] ...
- JAVA 数组作业——动手动脑以及课后实验性问题
JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...
- java类与对象的动手动脑和其他小问题
在Java中,我们可以通过组合一私有字段和一对get/set方法来定义一个属性.私有的变量,共有的方法. package sample; /** * 自定义Java类的示例 */ class MyCl ...
- JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
- JAVA String作业——动手动脑以及课后实验性问题
一:如何解释这样的输出结果?从中你能总结出什么?1.源码 //mao2015.10.20 //==的两个分辨 //对原始数据而言 //对引用类型变量 public class StringPool { ...
- 2019-9-16 java上课知识整理总结(动手动脑,课后实验)
java上课知识整理总结(动手动脑,课后实验) 一,课堂测试 1,题目:课堂测试:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求:(1)题目避免重复: (2)可定制( ...
- Java类和对象初始化
类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...
- java类和对象之间的差
java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父 ...
随机推荐
- AES加密算法-128位高安全,高速度
网上资料显示,下一代加密技术会围绕着AES技术进行.初出茅庐,学习编写了加密代码,如下所示 package com.bao.tools.encryption; import java.security ...
- [CF733D]Kostya the Sculptor(贪心)
题目链接:http://codeforces.com/contest/733/problem/D 题意:给n个长方体,允许最多两个拼在一起,拼接的面必须长宽相等.问想获得最大的内切圆的长方体序号是多少 ...
- [转]ZigBee On Windows Mobile--ZigBee模块天线设计
原文出处:http://www.cnblogs.com/dearsj001/archive/2008/10/26/1320029.html
- 基于ADL5317的雪崩光电二极管(APD)偏压控制/光功率监测电路的设计
1 引言 目前,雪崩光电二极管(APD)作为一种高灵敏.能精确接收数据和测量光功率的光探测器件广泛应用于光纤传感.光纤通信网络中.它借助于内部强电场作用产生雪崩倍增效应,具有极高的内部增益(可达102 ...
- Beaglebone Black - 准备
首先要玩 BBB,你需要买一台 BBB,淘宝 Element14 Beaglebone Black,我购入价 RMB 310,带数据线,没电源适配器的.Seeedstudio 有台叫 Beaglebo ...
- iOS - TouchLock 手势解锁
1.手势解锁的创建 代码封装见 QExtension QLockView.h #import <UIKit/UIKit.h> @interface QLockView : UIView / ...
- 转:HTTP 301 跳转和302跳转的区别
301和302 Http状态有啥区别?301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently ...
- Python学习(17)异常处理
目录 Python 异常处理 Python 标准异常 异常处理 使用except而不带任何异常类型 使用except而带多种异常类型 try-finally 语句 异常参数 异常的参数 用户自定义参数 ...
- mysql 内连接 左连接 右连接 外连接
mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | ...
- 选择列表控件的使用(PickList)
需要下载picklist.dll类库配合使用 <%@ Register TagPrefix="cc1" Namespace="PickListControl&quo ...