----------------------------android培训、java培训、期待与您交流!----------------------------------
感想:
总结:
内部类的访问规则:
1,内部类可以直接访问外部类中的成员,包括私有。
之所以可以直接访问外部类中的成员,是因为内部类中持有了
一个外部类的引用。
格式
外部类名.this
2,外部类要访问内部类,必须建立内部类对象。
访问格式:
1,当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。
可以直接建立内部类对象。
格式
外部类名.内部类名 变量名 = 外部类对象.内部类对象;
Outer.Inner in = new Outer().new Inner();
2,当内部类在成员位置上,就可以被成员修饰符所修饰。比如,private:将内部类在外部类中进行封装。
static:内部类就具备static的特性。
当内部类被static修饰后,只能直接访问外部类中的static成员。出现了访问局限。
- 在外部其他类中,如何直接访问static内部类的非静态成员呢?
new Outer.Inner().function();
- 在外部其他类中,如何直接访问static内部类的静态成员呢?
uter.Inner.function();
注意:当内部类中定义了静态成员,该内部类必须是static的。 当外部类中的静态方法访问内部类时,内部类也必须
是static的。
当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事务在使用外部事物的内容。
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。 可以理解为带内容的对象。
5,匿名内部类中定义的方法最好不要超过3个。
//匿名内部类
class Food
{
public void cook()
{
//由于不知道是什么类型的食物,所以加热方法没法写
}
}
class Person
{
public void eat(Food food)
{
food.cook();
System.out.println("吃吃吃");
}
}
class Demo
{
public static void main(String args[])
{
Person p1 = new Person();
p1.eat(new Beaf());
Person p2 = new Person();
p2.eat(new Beaf());
Person p3 = new Person();
p3.eat(new Beaf());
Person p4 = new Person();
/*
class Yangrou extends Food
{
public void cook()
{
System.out.println("新疆的羊肉串");
}
}
*/
p4.eat(new Food(){
//匿名内部类,写子类的代码
public void cook()
{
System.out.println("新疆的羊肉串");
}
});
}
}
class Beaf extends Food
{
public void cook()
{
System.out.println("韩式烤肉(牛五花)");
}
}
写代码时往往会去调用第三方的方法,发现方法需要的形参是父类,如果想扔一个自动以的子类实例进去,就可以用
匿名内部类。
写法: new 父类(){ //子类的代码 }
静态内部类(static inner class)
我们要知道,当内部类在成员位置上,就可以被成员修饰符所修饰。比如private:将内部类在外部类中进行封装。当加上
static,内部类就具备static的特性。当内部类被static修饰后,只能直接访问外部类的static成员,出现了访问局限。
在外部类其他类中,如何直接访问static内部类非静态方法呢?格式如下:
new外部类名.内部类名().非静态方法名;
class InnerTest
{
public static void main(String[] args)
{
new A.B().method(); //格式
}
}
class A
{
private static int a=4; //静态成员变量
static class B //静态内部类
{
public void method(){ //非静态方法
System.out.println("a=="+a);
}
}
publicvoid function(){
B b=new B();
b.method();
}
}
静态内部类(static inner class)
那么我们也就可以知道,访问静态方法的格式是:
外部类名.内部类名.静态方法名();
我们还要注意一点,当内部类中定义了静态成员,该内部类必须是static。当外部类中的静态方法访问内部
类时,内部类必须是静态的。
内部类定义原则是什么呢?当描述事物时,事物的内部还有事物,该事物就用内部类来描述。
因为内部类事物在使用外部事物的内容。
我们一般把内部类用private修饰,那么我们如何访问一个被private修饰的内部类的方法呢?;
我们去在外部类定义一个方法来调用内部类中的方法,例如:
Class A{
Private class B{
Void method(){
}
}
Public voidshow(){
new B().method;
}
}
分享到:
相关推荐
黑马程序员_毕向东_Java基础视频教程第18天-14-IO流(拷贝文本文件图例).zip
黑马程序员_hibernate框架开发2016版讲义和笔记资料_day02
黑马程序员_hibernate框架开发2016版讲义和笔记资料_day1_day2_day3_day4 包含4天的教学文档
黑马程序员_Java基础辅导班教程课件[第01期]第15天
黑马程序员_iOS基础视频_最适合初学者入门video,百度云链接。
黑马程序员__移动商城项目实战 包括黑马程序员乐淘商城实战和慕课React+Antd
黑马程序员_超全面的JavaWeb教程-视频+源码笔记
马程序员_黎活明__Spring如何装配各种集合类型的属性.ppt )
黑马程序员_Java基础辅导班教程课件[第01期]第12天
黑马程序员_Java基础辅导班教程课件[第01期]第8天
黑马程序员_Java基础辅导班教程课件[第01期]第11天
黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)
黑马程序员_Java基础辅导班教程课件[第01期]第12天
黑马程序员_毕向东_Java基础视频教程第22天-06-GUI(Action事件).zip
传智播客_javaWEB讲义和笔记资料_day09 黑马程序员_javaWEB教程讲义和笔记资料_day09
黑马程序员_android实例教程,网上找的的安卓教材,真心不错。
( 01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip )
黑马程序员_javaWEB讲义和笔记资料_day08 传智播客_javaWEB讲义和笔记资料_day08
黑马程序员_JDBC视频教程,仅供参考学习,有需要的可以下载,本人有全栈开发工程师各种学习技术视频教程及本档,有需要的可以留言或到本人账号下载
黑马程序员_毕向东_Java基础视频教程第18天-12-IO流(文本文件读取练习).zip