• java练习题——类与对象


    一.请依据代码的输出结果,自行总结Java字段初始化的规律

     1 public static void main(String[] args) {
     2         
     3         InitializeBlockClass obj=new InitializeBlockClass();
     4         System.out.println(obj.field);
     5         
     6         obj=new InitializeBlockClass(300);
     7         System.out.println(obj.field);
     8     }
     9 
    10 }
    11 
    12 class InitializeBlockClass{
    13     //下面这句在初始化块之前与之后,会影响到field字段的初始值
    14     //public int field=100;
    15     
    16     {
    17         field=200;
    18     }
    19     public int field=100;
    20     public InitializeBlockClass(int value){
    21         this.field=value;
    22     }
    23     public InitializeBlockClass(){
    24         
    25     }
    26 }

    运行结果:

    结论:初始化第一次是用了类的初始化块,第二次用了public的int初始化,所以第二次覆盖了第一次,输出了100;

             在main函数中给类InitializeBlockClass赋初值300,所以覆盖100,输出300;

             所以类的初始化有类的初始化块,还可以直接在类中赋值,还可以用一个函数为类的属性赋值,还可以构造函数。

    二.当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

    public class Inherit extends Father{
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Inherit x;
            x = new Inherit();
    
        }
    
    }
    class Father{
        {
            int i = 100;
            System.out.println(i);
        }
    }

    运行结果:可知创建主类对象的时候,也把主类的父类初始化块执行了。

    三.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员。

    方法(1):

    public class Employee {
        static int n = 200; //静态变量
    
        public static void main(String[] args) {
            New e = new New();
            n = e.Shi();   //将实例变量赋值给静态变量
            New.Jing(n); //
    
        }
    
    }
    class New{
        int m = 100; //实例变量
        int Shi(){
            int x;
            x = m;
            return x;//实例函数,返回一个实例值
        }
        static void Jing(int x){
            System.out.println(x);  //输出静态变量
        }
        
    }

    结果截图:

    方法(2):

    public static void main(String[] args) {
            New e = new New();
            /*n = e.Shi();   //将实例变量赋值给静态变量*/
            e.Shi();
            New.Jing(); 
            
    
        }
    
    }
    class New{
        int m = 100; //实例变量
        static int n = 200;
        void  Shi(){
            n = m;  //实例函数,返回一个实例值
        }
        static void Jing(){
            System.out.println(n);  //输出静态变量
        }
        
    }

    结果截图:

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

    public class Employee {
    
        public static void main(String[] args) {
            New x = new New();
            New y = new New();
            New z = new New();//三个对象
            New.Count();//输出数量
        }
    
    }
     class New{
        static int n ;
         New(){
            n+=1;  //每定义一个对象,n+1
        }
        static void Count(){
            System.out.println(n);  //输出静态变量
        }
        
    }

    结果截图:

  • 相关阅读:
    mysql增加字段,修改字段,增加索引等语句
    php获取post参数的几种方式
    微信小程序开发注意事项
    jQuery的deferred对象详解
    jquery.pagination.js的使用
    js实现一键复制
    PHP读取文件内容的五种方式
    3.3 模块的搜索路径
    3.2 py文件的两种功能
    3.1 模块的定义与分类,import,from...import
  • 原文地址:https://www.cnblogs.com/xiaosongbiog/p/4886157.html
Copyright © 2020-2023  润新知