糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > java 毕向东 内部类_java基础内部类(毕向东老师)

java 毕向东 内部类_java基础内部类(毕向东老师)

时间:2022-02-03 13:44:52

相关推荐

java 毕向东 内部类_java基础内部类(毕向东老师)

内部类

//特点:内部类可以直接访问外部类的成员,

//外部类要访问内部类中的成员必须创建内部类的对象。

//为什么要定义内部类呢?

类是用于描述事物的,而事务中如果还有具体的事物,而且这个内部的事物在访问着所属事物

中的内容,这时这个内部的事物,也需要用到类来描述。这个类就是内部类。

为什么内部类可以直接访问外部类的成员?

因为内部类都持有一个外部类的引用。外部类名。this。

static class Inner{

int num=5;

void method(){

{

int num=6;

System.out.println("method run.."+num);

}

public void show(){

System.out.println("num+"num);

Inner in=new Inner();

in.method();

System.out.println("num="+Outer.this.num);

}

}

class Haha{

class Inner{

}

}

class InnerClassDemo{

public static void main(String[] args)

{

new Outer().show();

//直接在其他类中访问一个类的内部类。

//因为Inner是一个成员,可以先创建一个对象。

Outer.Inner in= new Outer().new Inner();

in.method();

//直接new内部类对象。//调用内部类中的非静态成员method

Outer.Inner in= new Outer.Inner();

in.method();

//访问静态内部类中的静态成员,不需要对象。

Outer.Inter.function();

}

}

}

内部类也可以定义在外部类的局部位置上。

内部类定义在局部位置上,不允许访问局部中的变量。

只能访问被final修饰的局部常量。只能访问被final修饰的局部常量。。。

class Outer

{

private int num=4;

private Object obj;

public void show(final int y){

final int x=5;

class Inner{

void method(){

System.out.println("num="+num);

System.out.println("x="+x);

}

}

obj=new Inner();

class InnerClassDemo3

{

public static void main(String[] args)

{

System.out.println("Hello World:");

}

}

方法要被对象调用,X只在show方法中有效。

//匿名内部类

凡是匿名都是简写格式。

要定义匿名内部类必须有前提,内部类需要继承或者实现一个外部的类或者借口

这时才能简写成匿名内部类的形式。

匿名内部类。其实就是 Demo的一个对象。这个对象用{}结尾内部定义了成员

也就是说是一个带有成员内容的对象,这个对象有点儿胖。

abstract class Demo

{

abstract void show();

}

class Outer

{

private int num=5;

class Inner(没名字怎么办?) extends Demo//多了这一条,可以进行简写了

{

void show()

{

System.out.println("show run..."+num);

}

}

public void method(){

Inner in=new Inner();

in.show();

//在创建对象的过程中就对其进行描述。

格式:new 父类名或接口名().成员。

//匿名内部类:其实就是 Demo的一个匿名子类对象。Demo类型的,多态的。

new Demo()

{

void show(){

System.out.println("show run..."+num);

}

}.show();(对象调用方法。)//描述在上面,毕老师说有点儿胖。

}

}

class NoInnerClassDemo

{

public static void main(String[] args){

Outer out=new Outer();

out.method();

}

}

//interface Inter

{

void show();

void show();

}

class Outer{

class Inner implements Inter

{

public void show1()

{}

public void show2()

{}

}

public void method(){

new Inter()

{public void show1()

{}

public void show2()

{}

Inner in=new Inter();

{

private int a=3;

public void show1(){}

public void show2(){}

public void show3(){}

};

in.show1();

in.show2();

in.show3();//不可以。因为这个子类对象已经升级为了Inter接口类型,只能使用Interzhong

的方法,不能使用子类的特有方法。

}

}

}

class NoInnerClassDemo2

{

public static void main(String[] args)

{

new Object()//Object obj=new object()

{

public void show(){

System.out.println("object show run......");

}

public String toString()

{

return "object tostring";

}

};

System.out.println(obj.tostring());

obj.show();

new Inner();

}

class Inner

{

}

public void function()

{

new Inner();

}

}

主函数能直接访问的都是静态的。随类的加载而可以新建对象进行访问。

如果觉得《java 毕向东 内部类_java基础内部类(毕向东老师)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。