【无标题】

1、内部类
方法内部不能定义方法,方法只能调用方法。
类的内部可以定义一个类。外面的类外部类,里面的类就是一个内部类。
内部类主要是为外部类服务的。
位置来分
类的内部定义一个类 成员内部类
Outer out=new Outer();
Outer.Inter inner=out.new Inter();
方法或代码块中定义一个类 局部内部类
class Outer{
void test(){
class Inner{
System.out.println(“hhhh”);
}
}
}
public class hh{
Outer inner=new Outer();
}
匿名内部类
格式: new 父接口(){
}
列:
interface animal{
void show();
}
public void hh1{
public static void main(String[] args){
String name=“小明”;
animalShow(new Animal(){
public void shout(){
System.out.println(name+“是狗”);
}
}
}
public static void animalShow(animal an) {
an.shout();
}
}
类中可以定义属性和方法的,访问修饰符+static
成员内部类:访问修饰符有四个。外部类【类】访问修饰符有俩
在成员内部类中可以定义属性,方法,构造方法,代码块。就是具有类的特点
1>静态内部类:
2>非静态内部类:
一般类[外部类],访问修饰符有哪些呢?【public 默认的】
内部类访问修饰符,同属性访问修饰符一样。【private 默认 protected public】
非静态内部类的特点:在非静态内部类中不能定义static修饰的属性,方法,代码块。
在非静态内部类中可以调用外部类的属性,方法。
在非静态内部类的方法中可以调用外部类的属性,方法,满足就近原则。
如果出现同名?怎么区分? 外部类的属性或方法 外部类的名.this.属性|方法();
可以访问外部类static修饰的属性或方法吗?可以的
如何调用非静态内部的属性或方法呢?
1)在外部类的中进行? 外部类非静态方法: 直接创建内部类的对象,然后通过对象进行调用属性或方法
外部类静态方法: 创建外部类的对象,
再根据 外部类对象.new 内部类() 语法创建内部类对象
通过内部类对象调用属性和方法
2)在其他的类中如何调用?创建外部类的对象,
再根据 外部类对象.new 内部类() 语法创建内部类对象
通过内部类对象调用属性和方法
静态内部类:static修饰的,可以再静态内部类中使用static关键字来修饰属性和方法,以及代码块。
再静态内部类中,只能调用外部类中静态的属性和方法。在静态内部类中不能使用 外部类名.this
再静态内部类中不能使用this关键字?
错误的,再静态内部类中可以定义非静态的方法。可以再非静态方法中使用this关键字,调用该静态内部类中定义的非静态属性和方法。
但是不能使用 外部类.this
如果想调用静态内部类中的属性和方法:
如果是静态成员,可以直接通过 静态内部类名. 进行调用, 如果再其他类中可以通过 外部类.内部类.静态成员
如果是非静态成员,必须得创建静态内部类的对象 通过对象名. 进行调用 外部类.内部类 对象名 = new 外部类.内部类();
注意:内部类可以创建对象也是因为在内部类中有构造方法。如果显示添加带参构造方法,new对象的时候,必须传递参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值