您现在的位置是:首页 > Java 当前栏目 Java面向对象 JAVA 对象 变量 2023-03-02 10:57:13 时间 ### Java面向对象 ### * * * 面向对象的优点 * 1. 多重继承 * 2. Overload与Override * 3. 反射 * 4. 嵌套类 * * 静态内部类(static inner class) * 成员内部类(member inner class)(普通内部类) * 局部内部类(local inner class) * 匿名内部类(anonymous inner class) ### 面向对象的优点 ### 1)较高的开发效率。 2)保证软件的鲁棒性。 3)保证软件的高可维护性。 ### 1. 多重继承 ### 继承的主要目的就是为了重用父类的属性或者方法,而不需要重新重复定义。 (1)通过接口来实现 java中,不允许一个类继承多个类,但是允许一个类实现多个接口。 (2)通过内部类实现 在一个类中定义一些内部的类,让这些内部类继承自不同的父类,这样可以通过这些内部类来访问不同类的方法。 ### 2. Overload与Override ### 多态是面向对象程序设计中代码重用的一个重要机制,它表示当同一个操作作用在不同的对象的时候,会有不同的语义,从而会产生不同的结果。 (1)重载(Overload) 重载是指同一个类中有多个同名的方法,但这些方法有着不同的参数,因此可以在编译的时候就可以确定到底调用哪个方法,它是一种编译时多态。 重载可以被看作一个类中的方法多态性。 (2)覆盖(Override) 子类可以覆盖父类的方法,同样的方法会在父类与子类中有着不同的表现形式。 通过方法覆盖实现的多态也可以被称为运行时多态。 只有类中的方法才有多态的概念,类中成员变量没有多态的概念。 ### 3. 反射 ### 反射机制是指对于处在运行状态中的类,都能够获取到这个类的所有属性和方法。对于任意一个对象,都能够调用它的任意一个方法以及访问它的属性;这种通过动态获取类或对象的属性以及方法从而完成调用功能被称为Java语言的反射机制。 **功能:** ●获取类的访问能修饰符、方法、属性以及父类信息。 ●在运行时根据类的名字创建对象。在运行时调用任意一个对象的方法。 ●在运行时判断一个对象属于哪个类。 ●生成动态代理。 **在Java语言中获取Class对象的方法:** 1. 通过className.class来获取–不执行静态块和动态构造块。 2. 通过Class.forName()来获取–只执行静态块、而不执行动态构造块。 3. 通过Object.getClass()来获取–因为需要创建对象,所以会执行静态块和动态构造块。 **Class类常用方法:** 1. 获取类的构造方法(构造方法的封装类为Constructor) 1)public Constructor<?>\[\] getConstructors():返回类的所有的public构造方法。 2)public Constructor getConstructor(Class<?>… parameterTypes):返回指定的public构造方法。 3)public Constructor<?>\[\] getDeclaredConstructors():返回类的所有的构造方法。 4)public Constructor getDeclaredConstructor(Class<?>…parameterTypes):返回指定的构造方法。 2. 获取类的成员变量的方法(成员变量的封装类为Field类) 1)public Field\[\] getFields():获取类的所有public成员变量。 2)public Field getField(String name):获取指定的public成员变量。 3)public Field\[\] getDeclaredFields():获取类的所有的成员变量。 4)public Field getDeclaredField(String name):获取任意访问权限的指定名字的成员。 3. 获取类的方法 1)public Method\[\]getMethods()。 2)public Method getMethod(String name,Class<?>… parameterTypes)public Method\[\]。 3)getDeclaredMethods():获取所有的方法。 4)public Method getDeclaredMethod(String name,Class<?>…parameterTypes)。 ### 4. 嵌套类 ### 内部类的种类: #### 静态内部类(static inner class) #### 静态内部类是指被声明为static的内部类,它可以不依赖于外部类实例而被实例化,而通常的内部类需要在外部类实例化后才能实例化。静态内部类不能与外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法(包括私有类型)。 class outerClass{ static class innerClass{ } } #### 成员内部类(member inner class)(普通内部类) #### 成员内部类为非静态内部类,它可以自由地引用外部类的属性和方法,无论这些属性和方法是静态的还是非静态的。但是它与一个实例绑定在了一起,不可以定义静态的属性和方法。只有在外部的类被实例化后,这个内部类才能被实例化。非静态内部类中不能有静态成员。 class outerClass{ class innerClass{ } } #### 局部内部类(local inner class) #### 局部内部类指的是定义在一个代码块内的类,它的作用范围为其所在的代码块,是内部类中最少使用到的一种类型。局部内部类像局部变量一样,不能被public、protected、private以及static修饰。 局部静态内部类与静态内部类的基本特性相同。局部内部类与内部类的基本特性相同。 class outerClass{ private void menberFunction(){ class innerClass{ } } } #### 匿名内部类(anonymous inner class) #### 匿名内部类是一种没有类名的内部类,不使用关键字class、extends、implements,没有构造函数,它必须继承(extends)其他类或实现其他接口。 1)匿名内部类不能有构造函数。 2)匿名内部类不能定义静态成员、方法和类。 3)匿名内部类不能是public、protected、private、static。 4)只能创建匿名内部类的一个实例。 5)一个匿名内部类一定是在new的后面,这个匿名类必须继承一个父类或实现一个接口。 6)因为匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。 public class MyFrame extends Frame{ // 外部类 public MyFrame(){ addWindowListener(new WindowAdapter){ // 匿名内部类 public void windowsClosing(WindowEvent e){ dispose(); System.exit(0); } } } } 本文地址: Java面向对象 相关文章 java switch语句 Java操作excel Java BigDecimal详解 【Java】注解Annotation Java异常机制 JAVA-jstat 详解 Java基础--小结 Java: @Inject注解 java解析excel Java文件File Java之NIO java.io.File Java体系结构 java题目(一) java引用类型 JAVA解析Excel Java 计算机网络 java可变参数 Java-类型初始化 java 操作HBase