Java类与对象——几个课堂例子的总结及作业

作业:使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。

源代码:

 1 import java.util.Scanner;
 2
 3 class sss123 {
 4     //将用来计次的变量times给初始值为0
 5     public static int times=0;
 6     sss123() {
 7         //构造函数,每创建一个实例times就增加1
 8         times=times+1;
 9     }
10 }
11
12 public class StaticValue {
13     public static void main(String[] args) {
14         sss123 s1 = new sss123();
15         sss123 s2 = new sss123();
16         sss123 s3 = new sss123();
17         //可以看到当前我们已经手动创建了3个对象,接下来调用sss123类的静态变量查询创建了多少对象
18         System.out.println("当前创建的对象个数为 "+sss123.times);
19     }
20 }
21
22 //public class StaticValue {
23 //    public static void main(String[] args) {
24 //        String YorN=new String();
25 //        YorN="Y";
26 //        int i=0;
27 //        Scanner sc = new Scanner(System.in);
28 //        while(YorN.equals("Y"))
29 //        {
30 //            System.out.println("正在创建一个对象");
31 //            //我希望每循环一次就创建一个对象,但是不知道怎么表达
32 //            sss123 s = new sss123();
33 //            System.out.println("创建对象完成");
34 //            System.out.println("当前共创建对象个数为 "+sss123.times);
35 //            System.out.println("是否要继续创建对象?是(Y)/否(N)");
36 //            YorN=sc.nextLine();
37 //        }
38 //    }
39 //}

课堂例子:
1、对TestStaticInitializeBlock.java的总结:

源代码:

 1 class Root
 2 {
 3     static{
 4         System.out.println("Root的静态初始化块");
 5     }
 6     {
 7         System.out.println("Root的普通初始化块");
 8     }
 9     public Root()
10     {
11         System.out.println("Root的无参数的构造器");
12     }
13 }
14 class Mid extends Root
15 {
16     static{
17         System.out.println("Mid的静态初始化块");
18     }
19     {
20         System.out.println("Mid的普通初始化块");
21     }
22     public Mid()
23     {
24         System.out.println("Mid的无参数的构造器");
25     }
26     public Mid(String msg)
27     {
28         //通过this调用同一类中重载的构造器
29         this();
30         System.out.println("Mid的带参数构造器,其参数值:" + msg);
31     }
32 }
33 class Leaf extends Mid
34 {
35     static{
36         System.out.println("Leaf的静态初始化块");
37     }
38     {
39         System.out.println("Leaf的普通初始化块");
40     }
41     public Leaf()
42     {
43         //通过super调用父类中有一个字符串参数的构造器
44         super("Java初始化顺序演示");
45         System.out.println("执行Leaf的构造器");
46     }
47
48 }
49
50 public class TestStaticInitializeBlock
51 {
52     public static void main(String[] args)
53     {
54         new Leaf();
55     }
56 }

运行结果:

由此可见,静态初始化块的执行顺序为:先执行父类的静态初始化块,再执行子类的静态初始化块,然后在执行父类的普通初始化块和构造函数,最后执行子类的普通初始化块和构造函数

Java字段初始化的规律:先执行静态初始化快,再执行普通初始化快,在执行构造函数,再执行字段的初始值。

这个错的地方在于构造函数中要求传入一个整形变量,但是在主函数中使用的时候并没有传入整形变量,导致出错

时间: 2024-10-26 00:50:15

Java类与对象——几个课堂例子的总结及作业的相关文章

java类,对象,方法

1,类和对象   在面向对象的概念当中,类(class)是既包括数据又包括作用于数据的一组操作的封装体.类的数据称为成员变量,类对数据的操作称为成员方法.成员变量反映类的状态和特征,成员方法反映类的行为和能力.类的成员变量和方法统称为类的成员.   对象(Object)是类的实例(instance).对象是动态的,拥有生命周期,都会经历一个从创建.运行到消亡的过程.对象与类的关系就像变量与数据类型一样.   类声明 { 修饰符 } class <Classname> { extends <

Java类与对象的课后练习

Java类与对象的课后练习编程题(java2实用教程P111) 这章内容自学完了,在做教材课后其他练习题的时候(只要自己仔细)都没啥问题,但在做最后一道上机编程题的时候问题出现了,在阅读题目的时候自己能感受到的是这道题不难(的确也不难),我也很快写了出来,但运行程序的时候,结果一直不正确,最后改来改去都不对,思路是对的,分步执行的时候也感觉是有个地方出了问题但就是揪不出来,最后又把课本的前面的例子反复的看对比,最后找到了问题: System.out.println("cpu的速度:"+

java类与对象的区别

java类与对象的区别是个老生常谈的问题,刚开始学java的时候就开始接触类和对象,今天来总结一下他们之间的区别. 首先讲讲class和object的区别,其实就是一句话:object是所有class的父类,所有class类都默认继承object. java中类是对一类"事物"的属性和行为一种抽象,比如人类就可以定义为一个Person类: public class Person { public int age;//年龄 public String name;//姓名 public i

有关java类、对象初始化的话题,从一道面试题切入

最近在整理东西时,刚好碰到以前看的一道有关java类.对象初始化相关题目,觉得答案并不是非常好(记忆点比较差,不是很连贯).加上刚好复习完类加载全过程的五个阶段(加载-验证-准备-解析-初始化),所以如果周志明大大诚不我欺的话,无论是类加载过程.还是实例化过程的顺序我都已经了然于心了才对. 一道面试题 标题:2015携程JAVA工程师笔试题(基础却又没多少人做对的面向对象面试题) 地址:https://zhuanlan.zhihu.com/p/25746159 该题代码如下: public cl

【好程序员特训营】Java类与对象

Java支持以下类与对象的概念: 多态.继承.封装.抽象.类.对象.实例.方法. 就像是书.也可以分为语文书.数学书.历史书什么的,每本书又有不同的内容. 一个简单的雇员的例子: Employee类有四个成员变量:name.age.designation和salary.该类显式声明了一个构造方法,该方法只有一个参数. public class Test { public static class Employee{ String name; int age; String design; dou

JAVA类与对象(八)-----重写

重写:子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变.即:外壳不变,核心重写! 好处:可以根据子类的需要,定义特定于自己的行为.也就是说子类能够根据需要实现父类的方法. class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ System.out.println("狗可以跑和走&q

2015-3-29 Java 类,对象的定义与用用法

1,什么是类? 答:类是客观存在的,抽象的,概念的东西. 2,什么是对象? 答:对象是具体的,实际的,代表一个事物.例如:车是一个类,汽车,自行车就是他的对象. 关于类与对象的描述:类是对象的模版,对象是类的一个个体. 3,Java中定义类的方法? class 类名 用Java语法定义人类: public class Person { } 4,对象的定义方法? 1,对象声明:类名 对象名: 2,对象创建 对象名 =  new 类名(): new作用:分配内存空间. 也可以合写为:类名 对象名 =

JAVA复习3 Java类和对象

前边写了两篇废文,所以在博客上就写一些有用的东西吧,,如果大家要学JAVA,那你就必须了解类和对象的关系,,因为JAVA一个主要的特性就是面向对象.. 先看一下类和对象的概念:(其实在学校很讨厌这些概念的) 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 类:类是一个模板,它描述一类对象的行为和状态.  来例子吧,,coding............      既然类是描述一类对象的行为和状态,那么我们将这类对象选定为"

java类和对象详解

对象和类详解 什么是对象:万物皆对象,什么东西都是对象,例如,猫狗人 什么是类:类是同一事物的统称,它描述一类对象的行为和状态. 设计类:抽象过程 类的属性 类的方法 什么是实例化:由类得到对象这个过程叫做实例化 对象和类的区别:一个是抽象一个是具体,一个是集合一个是个体等等.一个是魔板一个是实例,一个是数据一个是数据结构等等. 如何设计类:public class student{}//把类的共同提出提取出来, 学生会有什么:名字,年龄,性别,等等,这就是共同特征. //共同特征为类的属性,共