本篇文章给大家谈谈java内部类访问外部,以及java内部类访问外部类方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、深入理解Java中为什么内部类可以访问外部类的成员2、Java内部类怎么直接调用外部类啊?3、Java中内部类可以访问外部类的成员,请问这样算不算是破坏了封装性?4、java内部类可以访问外部类的静态方法吗
深入理解Java中为什么内部类可以访问外部类的成员
一般来说,外部类调用内部类的方法分为以下几种情况:
1.使用static可以声明一个内部类, 可以直接在外部调用
// 定义外部类
class Outer
{
// 定义外部类的私有属性
private static String info = “hello world”;
// 使用static定义内部类
static class Inner
{
// 定义内部类的方法
public void print()
{
// 直接访问外部类的私有属性
System.out.println(info);
}
}
// 定义外部类的方法
public void fun()
{
// 通过内部类的实例化对象调用方法
new Inner().print();
}
}
public class InnerClassDemo03
{
public static void main(String args[])
{
// 通过Outer.Inner创建内部类的实例,并调用它的print方法
new Outer.Inner().print() ;
}
}
2.不使用statc声明一个内部类 ,使外部调用
//定义外部类
class Outer
{
//定义外部类的私有属性
private String info = “hello world”;
//定义内部类
class Inner
{
//定义内部类的方法
public void print()
{
//直接访问外部类的私有属性
System.out.println(info);
}
};
//定义外部类的方法
public void fun()
{
//通过内部类的实例化对象调用方法
new Inner().print();
}
};
public class InnerClassDemo04
{
public static void main(String args[])
{
//外部类实例化对象
Outer out = new Outer();
//实例化内部类对象
Outer.Inner in = out.new Inner();
//调用内部类的方法
in.print();
}
}
3.在方法中定义内部类 ,使外部调用
//定义外部类
class Outer
{
//定义外部类的私有属性
private String info = “hello world”;
//定义外部类的方法
public void fun(final int temp)
{
//在方法中定义的内部类
class Inner
{
//定义内部类的方法
public void print()
{
//直接访问外部类的私有属性
System.out.println(“类中的属性:” + info);
System.out.println(“方法中的参数:” + temp);
}
}
//通过内部类的实例化对象调用方法
new Inner().print();
}
}
public class InnerClassDemo05
{
public static void main(String args[]){
//调用外部类的方法
new Outer().fun(30);
}
}
Java内部类怎么直接调用外部类啊?
public class Outer{
int x;
String s = “hello”;
public void test(){
System.out.print(“test”);
}
public class Inner{
int s = 20;
public void testInner(){
//可以直接使用外部类的成员变量和成员方法
x = 0;
test();
//如果外部类的成员变量和内部类变量重名,可以这样调用外部类的变量
Outer.this.s = “test”;
//当然你可以new外部类对象 这也是没问题的
Outer o = new Outer();
o.x = 30;
o.test();
}
}
}
Java中内部类可以访问外部类的成员,请问这样算不算是破坏了封装性?
内部类本质上就是外部类的一个成员,享有成员一样的共性。
就好比抽象类,也是类,具有类的所有共性。然后因为abstract所以具有了自己的特性。
所以内部类具有成员的一切共性,也具有类的一切共性,同时也具有自己的一些特性。
类的成员之间可以互相访问,所以这个内部类也可以访问外部类的成员。封装的目的就是为了代码的复用、增强安全性、实现模块化等,其实内部类嵌入到里面也是为了这个目的。不能说是破坏了这个封装原则吧。
内部类也有说内嵌类的,这种内嵌类在SDK中还是不少的。JDK中记得不太清楚了,ADK(安卓的SDK)中比如有LinearLayout.LayoutParames、ViewGroup.LayoutParames、SharedPreferences.Editor等都是内部类的体现。
java内部类可以访问外部类的静态方法吗
内部类
就相当于一个外部类的
成员变量
,所以可以
直接访问
外部变量
,外部类不能直接访问内部类变量,必须通过创建内部类实例的方法访问,
new
InnerClass
(32).m就是创建内部类实例访问内部类成员变量。
你
想不通
的肯定是指内部类的私有变量
怎么可以
被外部类访问吧,按常规,私有变量m只能在InnerClass里被访问,
但你要注意,内部类就相当于一个外部类的成员变量,举个例子。
class
Outer{
private
int
m;
private
class
Inner{
private
int
n;
private
int
k;
}
}
m和类Inner都是成员变量,他们之间是平等的,唯一不同的就是Inner它是包装了几个成员变量比如n,k,也就是说m
n
k是平等的,区别在于访问n
k要通过Inner,就是要建立Inner实例访问nk,这样解释够
明白了吧
关于java内部类访问外部和java内部类访问外部类方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。