----------------------------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中,封装可以使用类来实现。类是Java中的基本结构单元,提供了封装数据和操作数据的方法。 API API(Application Programming Interface)是...
本资料包是黑马程序员提供的详细教程,涵盖了Java集合的例题、源码以及配套的PPT教学文档,旨在帮助学习者深入理解和掌握Java集合的使用。 首先,我们来探讨Java集合框架的基本概念。Java集合框架包括接口和实现类...
《黑马程序员JAVA面试宝典2018年5月最新...总的来说,《黑马程序员JAVA面试宝典2018年5月最新版》是一本全面覆盖Java开发各方面的面试准备书籍,它能够帮助Java开发者系统地复习和提升技能,以应对日益激烈的竞争环境。
此外,还会涉及到异常处理、接口、内部类和匿名类等内容。 2. **集合框架**:面试中经常会问到ArrayList、LinkedList、HashMap、HashSet等集合类的原理和使用,以及并发容器如ConcurrentHashMap、...
### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机执行一系列任务的过程。 2. **Java语言概述,历史、特点** - **概述**:Java是一种...
8. **接口与内部类**:接口定义了行为规范,内部类则允许在一个类内部定义另一个类,它们都是Java中强大的工具。 通过"第十一天笔记.txt",我们可以回顾和复习第十一讲的内容,包括可能涉及的函数、类的设计或特定...