动手动脑(类与对象作业再次提交)

Java字段初始化的规律:

1有实际参数值的,按实际参数值进行初始化例如obj=new Init(300);

System.out.println(obj.field);

2没有给出实际参数值时,找默认的构造函数例如Init obj=new Init();

System.out.println(obj.field);

2当多个类之间有继承关系时,创建子类对象导致父类初始化快的执行的程序:

package com;

class Father {

static

{

System.out.println("父类静态块");

}

public Father() {

System.out.println("父类构造方法");

}

}

class Child extends Father {

static

{

System.out.println("子类静态块");

}

public Child() {

System.out.println("子类构造方法");

}

}

public class Duo {

public static void main(String []args) {

new Father();

System.out.println("--------------");

new Child();

}

}

3总结静态初始化块的执行顺序:

代码如下:package com;

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 Q

{

public static void main(String[] args)

{

new Leaf();

}

}

分析如下:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕后再去看父类有没有非静态代码块。如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕后接着看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕执行构造方法。总之静态代码块内容优先,然后是父类的非静态代码块和构造方法,做后是子类的非静态代码块和构造方法。

时间: 2024-11-08 22:45:19

动手动脑(类与对象作业再次提交)的相关文章

动手动脑--类与对象

一. public class Test { public static void main(String[] args) { Foo obj1=new Foo(); Foo obj2=new Foo(); System.out.println(obj1==obj2); } } class Foo{ int value=100; } 当"=="施加于原始数据类型变量时,是比较变量所保存的数据是否相等当"=="施加于引用类型变量时,是比较这两个变量是否引用同一对象.引

【Java】课后动手动脑 类与对象

1.代码及实验结果 当"=="施加于原始数据类型变量时,是比较变量所保存的数据是否相等 当"=="施加于引用类型变量时,是比较这两个变量是否引用同一对象. 引用代表地址,所以"=="实际上相当于比较两个引用类型变量中保存的对象地址是否相同. 2.代码及实验结果 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 3.代码及实验结果 Java字段初始化的规律:按照顺序初始化,如果有多个方法对字段初始化,将按照最后一次初始化输出. 4

动手动脑——类与对象

问题一: 静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)? 答:先创建对象,然后用对象调用实例成员. 问题二: 以下代码输出结果是什么? 答:100  300 问题三: 以下代码为何无法通过编译?哪儿出错了? 答:如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 原文地址:https://www.cnblogs.com/haheihei/p/11701241.html

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.源代码 //mao2

论团队(类与对象邮箱作业再次提交)

大家众所周知,一个项目的完成需要团队的努力,团队是至少以三个人为规模的.首先一个人算不上团队,只能称之为个体,两个人则相互支持,三个人便是团队,这样的团队有其基本的特性,主从监督和责任.当然并不是说一个人不能成功,有很多并非团队成功的案例,例如王江民先生一个人创造出kv100,kv200反病毒软件.两个人相互支撑也是可以成功的例如:周辉和刘杰先生创造出av95反病毒软件.但现在的项目一般都需要团队共同完成.既然是团队就需要领导,这个领导不需要像程咬金一样的牛人,但必须像李离一样具有死士的精神,项

动手动脑(因服务器原因无法提交,现在补上)

通过super调用基类构造方法,必须是子类构造方法中的第一个语句.

18.03.14 类和对象作业2

A:Apple 描述 程序填空,使其输出4 5 1 #include <iostream> using namespace std; class Apple { // 在此处补充你的代码 static void PrintTotal() { cout << nTotalNumber << endl; } }; int Apple::nTotalNumber = 0; Apple Fun(const Apple & a) { a.PrintTotal(); ret

Java类和对象动手动脑

动手动脑1 以下代码为何无法通过编译?哪儿出错了? 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 动手动脑2 进行试验 使用上页幻灯片中定义的类,以下代码输出结果是什么? public class Test { public static void main(String[] args) { InitializeBlockClass obj=new InitializeBlockClass(); System.out.println(obj.field);//? obj=n

类和对象动手动脑

// 信1705-3 20173574 李胜明 1. 早期经常这样定义变量 int value=100; 前面的示例中这样定义变量 MyClass obj = new MyClass(); 这两种方式定义的变量是一样的吗? 答:这两种方式定义的变量是不一样的,第一种是原始数据类型定义的变量,而第二种是通过引用类名创建一个对象obj出来,obj称为对象变量. 2. 请输入并运行以下代码,得到什么结果?? 代码截图: 3. 以下代码为何无法通过编译?哪儿出错了? package 动手动脑; publ