zoukankan      html  css  js  c++  java
  • 02-类和对象-动手动脑

    1.以下代码为何无法通过编译?哪出错了?

     1 public class Test {
     2     public static void main(String[] args) {
     3         Foo obji=new Foo();
     4     }
     5 }
     6 class Foo{
     7     int value;
     8     public Foo(int initValue) {
     9         value=initValue;
    10     }
    11 }

    出错原因:在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到java的构造函数的声明过程,因此,在类中没有书写构造函数的方法的时候,编译器默认继承Object类,并在编译的时候会产生一个参数为空的构造函数,然而在定义的Foo这个类的时候,给予了一个Foo(int)类型的构造方法,所以在上述Test的调用过程中,obj1并不能够调用到new Foo()这个构造函数的方法。

    2.请根据代码的输出结果,自行总结JAVA字段初始化的规律。

    规律如下:

    所有类的变量都默认初始化为null

    数字类的原始数据类型默认初始化为0

    执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

    执行类的构造参数

    类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”

    3.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

     1 public class Test{
     2     int x=7;
     3     static int y=8;
     4     public static void test1(){
     5         System.out.println("非静态变量x为:"+new Test().x);
     6         System.out.println("静态变量y为:"+y);
     7     }
     8     public static void main(String[] args) {
     9         Test.test1();
    10         Test i=new Test();
    11         System.out.println("x="+ i.x);
    12     }
    13 }

    运行结果如下:

    非静态变量x为:7
    静态变量y为:8
    x=7

  • 相关阅读:
    我的学习记录-JAVA SE 03
    我的学习记录-JAVA SE 02
    我的学习记录-JAVA SE 01
    我的mysql的学习记录
    Hibernate4学习一
    java3
    java5
    java基础4
    java2
    java
  • 原文地址:https://www.cnblogs.com/Qi77/p/9825625.html
Copyright © 2011-2022 走看看