zoukankan      html  css  js  c++  java
  • Java 类与对象

    一、构造方法

     1 public class Text {
     2     public static void main(String[] args) {
     3         Foo obj1= new Foo(5);
     4         System.out.println(obj1.value);
     5     }
     6 }
     7 class Foo{
     8     int value;
     9     Foo(int initValue){
    10         value = initValue;
    11     }
    12 }

    运行结果:

      若主函数中改为:Foo obj1=new Foo();则程序会报错。因为,如果类提供了一个自定义的构造方法,将导致系统不再提供默认的构造方法。

      并且,一个类中可以有多个构造函数,构造函数之间可以互相调用。

    二、Java字段初始化

     1 public class Text {
     2     public static void main(String[] args) {
     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 class InitializeBlockClass{
    11     {
    12         field=200;
    13     }
    14     public int field=100;
    15     public InitializeBlockClass(int value){
    16         this.field=value;
    17     }
    18     public InitializeBlockClass(){}
    19 }

    运行结果:

      Java字段初始化规律系统会按顺序对Java字段进行初始化,如果有好几个方法都对同一个变量进行了初始化。Java会将最后一次的初始化结果赋给该变量。

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

     1 public class Text{
     2     int a = 2;//实例变量
     3     static int  b = 3;//类的静态变量
     4     public static void variable(){   
     5         System.out.println("实例变量a = " + new Text().a);
     6         //在静态方法中访问类的实例变量需首先进行类的实例化
     7         
     8         System.out.println("静态变量b = " + b);
     9         //在静态方法中可直接访问类的静态变量
    10     }
    11      public static void main(String[] args) {
    12          Text.variable();
    13          Text test = new Text();
    14          System.out.println("结果是 :实例变量 = " + test.a);//访问实例成员
    15     }
    16  }

    运行结果:

      static修饰的在加载时是先于非静态的加载,也就是如果在static中如果调用了非静态的方法或变量会报错,因为此时非静态的方法和变量还不存在(可以这样理解) 。
      在静态方法中访问类的实例变量需首先进行类的实例化,除了加static修饰,还可以先new创建一个对象,通过对象去调用成员方法和变量,如new A().test()。

    四、请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象。

      1、创建一个类T;

      2、定义一个静态整型变量number,使其记录创建对象个数;

      3、定义构造函数,每当创建一个对象时,令number++;

      4、在程序中定义一个函数showNum(),令其输出计量值number,即对象创建个数。 

     1 public class Text{
     2     public static void main(String[] args){
     3         T obj=new T();
     4         obj.showNum();
     5         obj=new T();
     6         obj.showNum();
     7         obj=new T();
     8         obj.showNum();
     9     }
    10  }
    11 class T{
    12     public static int number=0;
    13     public T(){
    14         number++;
    15     }
    16     public void showNum(){
    17         System.out.println("第"+number+"个实例化对象!");
    18     }
    19 }

    运行结果:

     

      

  • 相关阅读:
    线段树 by yyb
    【SYZOJ279】滑稽♂树(树套树)
    【BZOJ2806】Cheat(后缀自动机,二分答案,动态规划,单调队列)
    【BZOJ2733】永无乡(线段树,并查集)
    【BZOJ4991】我也不知道题目名字是什么(线段树)
    【BZOJ4999】This Problem Is Too Simple!(线段树)
    【BZOJ1858】序列操作(线段树)
    【BZOJ1835】基站选址(线段树)
    【BZOJ2962】序列操作(线段树)
    【BZOJ1558】等差数列(线段树)
  • 原文地址:https://www.cnblogs.com/yifengyifeng/p/5982515.html
Copyright © 2011-2022 走看看