国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

java的內(nèi)部類問題

2019-11-17 04:04:43
字體:
供稿:網(wǎng)友
 class Outer
{
PRivate int index=100;
public class Inner
{
  private int index=50;
   void print()
   {
    int index=30;
    System.out.println(index);
    System.out.println(this.index);
    System.out.println(Outer.this.index);
    }
  }
     void print()
    {
   Inner inner=new Inner();
   inner.print();
   }
   Inner getInner()
   {
    return new Inner();
   }
   }
public class Testprint
{
  public static void main(String[] arguments)
  {
    Outer out=new Outer();
    out.print();
    Outer.Inner inner1=out.getInner();
    inner1.print();
   }
  }
這是個(gè)簡單的例子,只是我會從這個(gè)例子中總結(jié)出一些我的經(jīng)驗(yàn),關(guān)于java和C#的
類中類可以看作是類的一個(gè)非靜態(tài)的方法,你可以返回這種方法, Inner getInner()
   {
    return new Inner();
   }
如果你在類外訪問類中類的時(shí)候,可以這么作
在java和C#中類的變量既字段一旦聲明賦初值后就不能更改了,
class Outer
{
private int index=100;
index=400;
}
這么寫是錯(cuò)的,要想對值修改可以在構(gòu)造函數(shù)中,比如
class Outer
{
private int index;
public Outer()
{
  this.index=400;
  }
還有一個(gè)需要注意的問題就是類的字段要訪問修飾符號,但方法的是局部變量就不需要:
void print()
   {
    private int index=30;
    System.out.println(index);
      }
這么寫是錯(cuò)的,這叫畫蛇添足,應(yīng)該:
void print()
   {
    private int index=30;
    System.out.println(index);
      }
類中的方法是可以相互訪問的,但是非靜態(tài)的方法不可以訪問靜態(tài)的方法,靜態(tài)的方法不可以訪問非靜態(tài)的方法
public class Outer
{
private int index=100;
public class Inner
{
  private int index=50;
   void print()
   {
    int index=30;
    System.out.println(index);
    System.out.println(this.index);
    System.out.println(Outer.this.index);
    }
  }
     void print()
    {
   Inner inner=new Inner();
   inner.print();
   }
   Inner getInner()
   {
    return new Inner();
   }
   public static void main(String[] arguments)
  {
    Outer out=new Outer();
    out.print();
    Outer.Inner inner1=out.getInner();
    inner1.print();
    Inner inner=new Inner();
    inner.print();
   }
}
這樣寫會出現(xiàn)一個(gè)錯(cuò)誤
non-static variable this cannot be referenced from a static context
就是說this指針不能訪問靜態(tài)的方法main()
關(guān)于這個(gè)示例還有一點(diǎn)就是類中類可以任意的訪問它的父類,因?yàn)轭愔蓄惐4媪怂母割惖膖his指針!
如果類的訪問修飾符沒寫,就是默認(rèn)的,默認(rèn)的類在包體內(nèi)部是可以相互訪問的,但是在包外是不能訪問的哦!
class Testprint
{
  public static void main(String[] arguments)
  {
    Outer out=new Outer();
    Outer.Inner inner2=out.new Inner();
   }
  }
對于類中類的定義也可以采取這種方式定義,不過要先定義外部類,然后定義這個(gè)類的內(nèi)部類
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 肥乡县| 峡江县| 青岛市| 盐源县| 凉城县| 张家界市| 龙游县| 赤壁市| 阳高县| 旅游| 浙江省| 河源市| 南漳县| 郁南县| 陆丰市| 延津县| 松滋市| 钦州市| 弋阳县| 淮安市| 东平县| 玉龙| 灌阳县| 察隅县| 平果县| 汨罗市| 雷州市| 曲周县| 石景山区| 汉寿县| 含山县| 富蕴县| 罗源县| 邵东县| 阿合奇县| 开阳县| 张家川| 报价| 长沙县| 泾阳县| 昌平区|