----------------------------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版讲义...通过对黑马程序员提供的这门课程的学习,开发者不仅能掌握Hibernate的核心概念和技术,还能提升在实际项目中的数据库操作效率,为构建高效、稳定的Java应用打下坚实基础。
黑马程序员__移动商城项目实战 包括黑马程序员乐淘商城实战和慕课React+Antd
黑马程序员_iOS基础视频_最适合初学者入门video,百度云链接。
《Hibernate框架深度解析——基于黑马程序员2016版教学资料》 Hibernate,作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作中的工作。它通过提供数据持久化的对象模型,使得开发者可以...
马程序员_黎活明__Spring如何装配各种集合类型的属性.ppt )
《黑马程序员_Java基础辅导班教程课件[第01期]第15天》是针对初学者设计的一堂深入浅出的Java编程课程,旨在帮助学员巩固和深化Java基础知识。这堂课件涵盖的内容广泛且实用,对于想要在IT行业中开启Java开发旅程的...
黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)
"黑马程序员_(适合初学者入门的Java基础视频)"是一套专为初学者设计的Java基础教学课程,旨在帮助零基础的学习者逐步掌握Java编程的基本概念和技能。 该视频教程涵盖了Java的基础知识,包括: 1. **环境搭建**:...
黑马程序员_android实例教程,网上找的的安卓教材,真心不错。
【标题】"01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip" 提供的是一门由黑马程序员机构推出的Java基础强化课程,由讲师张孝祥主讲,旨在深入讲解Java编程的基础知识并进行能力提升。 【描述】中提到...
### 黑马程序员_超全面的JavaWeb教程-视频+源码笔记 #### JavaWeb基础知识概览 在深入了解本教程之前,我们先来简要回顾一下JavaWeb的基础知识。JavaWeb是利用Java语言开发Web应用的技术集合。它主要包括Servlet、...
传智播客_javaWEB讲义和笔记资料_day09 黑马程序员_javaWEB教程讲义和笔记资料_day09
黑马程序员_JDBC视频教程,仅供参考学习,有需要的可以下载,本人有全栈开发工程师各种学习技术视频教程及本档,有需要的可以留言或到本人账号下载
2. CSS基础:选择器的使用(如类选择器、ID选择器、元素选择器等),属性(如color、font-family、background-color、padding、margin等),盒模型(content、padding、border、margin),浮动和清除,以及CSS布局...
除了直接实现ActionListener接口,还可以使用匿名内部类或者Java 8的Lambda表达式来简化代码。例如,使用Lambda表达式可以这样写: ```java button.addActionListener(e -> { System.out.println("Button clicked...
在"黑马程序员_Java基础辅导班教程课件[第01期]第13天"中,我们聚焦于Java编程语言的基础知识,这是一门面向初学者的课程,旨在帮助学员快速掌握Java开发的基本技能。第13天的课程通常会涵盖上一天(第12天)所学...
这个名为“黑马程序员_毕向东_Java基础源码.rar”的压缩包文件,包含了丰富的Java基础源代码实例,对于初学者来说,是深入了解Java编程的良好资源。 一、Java基本语法 Java语言以其严格的类型检查和面向对象特性...
在"黑马程序员_javaWEB讲义和笔记资料_day08"中,我们可以预见到这一天的学习内容将深入到Java Web开发的核心概念和技术。"传智播客"作为知名的技术教育机构,其课程通常涵盖全面且深入的IT知识,因此这些讲义和笔记...
黑马程序员_2小时教你写一个android程序[第06天]课件源码