博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3-类与对象-动手动脑
阅读量:5142 次
发布时间:2019-06-13

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

一:1.

2.程序源代码:

1 class InitializeBlockClass 2 { 3     { 4         field=200; 5     } 6     public int field=100; 7     public InitializeBlockClass(int value) 8     { 9         this.field=value;10     }11     public InitializeBlockClass(){}12     public static void main(String[] args) 13     {14         InitializeBlockClass obj=new InitializeBlockClass();15         System.out.println(obj.field); // ?16         obj=new InitializeBlockClass(300);17         System.out.println(obj.field); // ?18     }19 }

3.程序结果截图:

4.结果分析:

(1)

{

    field=200;

}

该部分为类的初始化块,可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员。类的这种“没有名字”的“成员”,多用于初始化类的字段。 

(2)

public int field=100;  在定义时进行初始化,此时field = 100;

System.out.println(obj.field); 输出field的值100。

(3)

obj=new InitializeBlockClass(300);

System.out.println(obj.field);

利用构造方法进行初始化,将field的值初始化为300,输出300。

5.规律总结:

Java进行初始化的地方有两个:初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块。静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。

如果在主函数中创建对象时没有形参时,如果在类中定义了公共的变量并给与了赋值,那么就会把值赋给主函数中的变量,再调用类中的默认构造函数,如果在主函数中创建对象时有形参,则调用类中对应的构造函数。

 

二:1.

2.程序源代码:

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();

}

}

3.程序结果截图:

4.规律总结:静态初始化块的执行顺序:

创建子类型的对象时,也会导致父类函数的执行,先执行静态函数,在执行public函数,最后执行函数。

 

三:1.

2.程序源代码:

1 package lei1; 2  3 public class Fangfa  4 { 5         public static void a() 6         { 7             System.out.println("类的方法"); 8         } 9         public void b()10         {11             System.out.println("对象的方法");12         }13 }14 public class Jingshi 15 {    public static void main(String[] args)16     {17          Fangfa.a();18         Fangfa e=new Fangfa();19         e.b();20         e.a();21      }22 }

3.结果截图:

 

转载于:https://www.cnblogs.com/liurx/p/7699579.html

你可能感兴趣的文章
Windows Phone 7 优秀开源项目收集
查看>>
白盒交换机NOS列表(picos/SnapRoute/ONL)
查看>>
微信小程序设置控件权重
查看>>
第六单元 用户、群组和权限
查看>>
UITableView的UITableViewStyleGrouped
查看>>
[翻译] GCDiscreetNotificationView
查看>>
用TableView写带特效的cell
查看>>
Spring AOP实战例子与springmvc整合不起效果的解决办法
查看>>
C++之重载
查看>>
z-index用法
查看>>
Oracle数据库入门到高薪培训教程(从Oracle 11g 到 Oracle 19c)
查看>>
Python day 7(2) 类和实例(1)
查看>>
理了么项目——测试计划
查看>>
java 常用的三大集合类
查看>>
django项目的大致流程
查看>>
概率期望学习笔记
查看>>
什么是多态
查看>>
T-SQL逻辑查询
查看>>
Subversion更新yum源
查看>>
mac os系统go安装:go install github.com/nsf/gocode: open /usr/local/go/bin/gocode: permission denied...
查看>>