七、类的高级特性

1、抽象类  

  抽象类:只声明方法而不去具体实现。不能被实例化创建对象。

  语法:abstract class 类名{...}

  抽象方法:只有方法的声明,没有方法的实现,需要子类重写。

  语法:abstract <返回值类型> 方法名(参数列表)

2、内部类

(1)成员内部类

  在一个类中使用内部类可以在内部类中直接存取其所在类的私有成员变量及成员方法。  

  内部类的实例一定要绑在外部类的实例上,如果外部类中初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上,内部类初始化使用new关键字。

  语法:public class OuterClass{

        private class InnerClass{

      }

    }

  如果在外部类和非静态方法之外实例化内部类对象,需要使用“外部类.内部类”的形式指定该对象的类型。

  实例化内部类对象:外部类.内部类 变量名 = 外部类对象.new 内部类();

           OuteClass.innerClass in = out.new innerClass();

 1 public class TheSameName{
 2     private int x;
 3     private class Inner{
 4         private int x=9;
 5         public void doit(int x){
 6             x++;        //调用的是形参x
 7             this.x++;    //调用内部类的变量x
 8             TheSameName.this.x++;    //调用外部类的变量x
 9         }
10     }
11 }

(2)局部内部类

  在方法中定义的内部类,作用范围只存在于整个方法体内。

(3)匿名内部类

  语法:return new A(){...}

(4)静态内部类

  static修饰,不能使用外部类的非静态成员

  特点:a.创建静态内部类的对象,不需要其外部类的对象。

     b.不能从静态内部类的对象中访问非静态外部类的对象。

3、Class类和反射

(1)访问构造方法:返回Constructor类型的对象或数组

  getConstructors()

(2)访问成员变量:返回Field类型的对象或数组

  getField()

(3)访问方法:返回Method类型的对象或数组

  getMethods()

时间: 2024-08-04 21:27:32

七、类的高级特性的相关文章

技术篇7.0类的高级特性

类除了具有普通的特性之外,还具有一些高级特性,如包.内部类等.包在整个管理中起到了非常重要的作用,使用包可以有效地管理繁杂的类文件,解决类重名问题,当在类中配合与权限修饰符使用时,可以控制其他人对类成员的访问.同时在Java语言中一个更为有效的隐藏实现细节的技巧是使用内部类,通过使用内部类机制可以向上转型为被内部类实现的公共接口.由于在类中可以定义多个内部类,所以实现接口的方式也不止一个,只要将内部类中的方法设置为类最小范围的修饰权限即可将内部类的实现细节有效地隐藏. 抽象类 (概念)所谓抽象类

第11章 类的高级特性--内部类

在类中再定义一个类,则将在类中再定义的那个类称为内部类: 内部类可分为成员内部类.局部内部类.匿名类 1.成员内部类 在内部类中可以随意使用外部类的成员方法以及成员变量,尽管这些类成员被修饰为private: 但内部类的成员只有在内部类的范围之内是可知的,不能被外部类使用 内部类的对象实例化操作必须在外部类 使用this关键字获取内部类与外部类的引用 public class TheSameName{ private int x; private class Inner{ private int

No2_5.类的高级特性_Java学习笔记_抽象类和成员内部类

一.抽象类1.所谓抽象类,只声明方法的存在而不去实现它的类:2.抽象类不能被实例化,即不能实现其对象:3.abstract class 类名{ 类体 }4.包含一个或多个抽象方法的类必须声明成抽象类:5.abstract <方法返回值类型> 方法名(参数列表) 二.内部类1.如果在一个类中再定义一个类,就将在类中定义的那个类称为内部类:2.内部类分为成员内部类,局部内部类以及匿名内部类:3.成员内部类: a.可以在内部类中直接存取其所在类的私有成员变量: b.外部类不可以直接访问内部类成员变量

第11章 类的高级特性--final

1.final变量 (1)final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值.通常,由final定义的变量为常量.例如:final double PI=3.14; final关键字定义的变量必须在声明时对其进行赋值操作. 被定义为final的常量定义时需要使用大写字母命名,并且中间使用下划线进行连接. 例如:private final int VALUE_1=9; (2)final还可以修饰对象引用 一旦一个对象引用修饰为final后,它只能恒定指向一个对象无法将其改变以

类的高级特性(二)

1.局部内部类 局部内部类:在类的方法中定义 作用范围:方法内 2.匿名内部类 内部类不一定要有名字. 匿名内部类的所有实现代码都需要在大括号之间进行编写. 语法格式: return new A(){ .......//内部类体 }; A表示对象名. 3.静态内部类 内部类前加修饰符static,就是静态内部类. 特点:不可调用外部类的非静态成员. a.创建静态内部类的对象,不需要其外部类的对象. b.不能从静态内部类的对象中访问非静态外部类对象.

第11章 类的高级特性--类名冲突

类名冲突 在程序中定义了一个login类,因业务需要,还要定义一个名称为login的类,但是这两个类所实现的功能完全不同,于是问题就产生了,编译器不会允许存在同名的类文件. 解决这类问题的办法是将这两个类放置在不同的类包中.

java程序-类的高级特性

创建Employee类,在类中定义三个属性:编号,姓名,年龄,然后在构造方法里初始化这三个属性,最后在实现接口中的定义的CompareTo方法,将对象按编号升序排列. 代码如下:(程序可能有些错误,方法是对的,见谅) import java.awt.List; import java.util.ArrayList; import java.util,Collection; import java.util,Collections; import java.util,Iterator; impor

java学习笔记(七)类的高级概念

类的高级概念包括:访问修饰符.封装.静态成员.初始化块以及内部类等混合内容. 访问修饰符: (1).公开访问级别:使用public关键字修饰.用public关键字修饰的成员对外公开,即公开成员可以被任何其它对象访问. (2).受保护访问级别:使用protected关键字修饰.受保护的成员可以被同一包中的类所访问,还可以被类的子类所访问,不管子类是在哪个包中. (3).默认访问级别:没有访问修饰符.默认访问级别的成员可以被同一包中的其它类所访问. (4).私有访问级别:使用private关键字修饰

(升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课程会涵盖Scala编程详解.Spark核心编程.Spark SQL和Spark Streaming.Spark内核以及源码剖析.性能调优.企业级案例实战等部分.完全从零起步,让学员可以一站式精通Spark企业级大数据开发,提升自己的职场竞争力,实现更好的升职或者跳槽,或者从j2ee等传统软件开发工程