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的父 ...
 
随机推荐
- Linux 在一个命令行上执行多个命令
			
Linux 在一个命令行上执行多个命令 1. [ ; ] 如果被分号(;)所分隔的命令会连续的执行下去,就算是错误的命令也会继续执行后面的命令. 2. [ && ] 如果命令被 &am ...
 - Qt修改xml文件
			
<taskpackage styleId="styles/2dc70235-e48b-4e11-b074-3c3f773ae1f3" id="3333" ...
 - (Theano 1)Theano自述文件
			
Theano在GitHub上的自述文件 https://github.com/Theano/Theano 也不知道这个Theano好不好,但是从Theano到Lasagne:基于Python的深度学习 ...
 - 清除SVN获取文件的所有.svn文件夹
			
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\清除SVN信息] @=&qu ...
 - poj 1474 Video Surveillance (半平面交)
			
链接:http://poj.org/problem?id=1474 Video Surveillance Time Limit: 1000MS Memory Limit: 10000K Total ...
 - NoSQL数据库的分布式模型
			
NoSQL数据库的分布式模型 单一服务器 在一个服务器完全能够胜任工作时就没必要考虑分布式,这样部署简单,维护也方便很多: 分片 特点 数据的各个部分存放在集群的不同服务器中: 比如按字母来划分:以a ...
 - Windows Internals学习笔记(二)系统架构
			
参考资料: 1. <Windows Internals> 2. http://bestcbooks.com 3. Windows Drive Kit 4. Microsoft Window ...
 - git学习笔记11-git多人协作-实际多人怎么开发
			
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin. 要查看远程库的信息,用git remote: $ git r ...
 - T-SQL JOIN
			
a表name sex张三 男李四 女 b表name age李四 30王五 23 1 全外连接select a.name,a.sex,b.name,b.agefrom a full outer join ...
 - phpcms 内容——>评论管理  中添加 打开文章链接的 功能
			
需要实现的功能:在后台管理系统中的 内容 下的——>评论管理 中添加 打开文章链接的 功能 1.数据库表是 v9_comment和v9_comment_data_1. v9_comment是被 ...