面对对象编程

多态的应用-继承多态-接口多态

使用父类作为方法形参实现多态

        使用父类作为方法返回值实现多态

        当这个作为参数的父类是普通类或者抽象类时,构成继承多态

        当这个父作为参数的父类是一个接口时,构成接口多态

        多态作为形参


 形式参数

                 基本类型(前面讲过,不解释)

                 引用类型

                         普通类

                                 当一个形参希望我们传入的是一个普通类时,我们实际上传入的是该类的对象/匿名对象

                         抽象类

                                 当一个形参希望我们传入的是一个抽象类时,我们实际上传入的是该类的子类对象/子类匿名对象

                         接口

                                 当一个形参希望我们传入的是一个接口时,我们实际上传入的是该类的实现类对象/实现类匿名对象


 多态作为返回值

 返回值类型

                 基本类型(前面讲过,不解释)

                 引用类型

                         普通类

                                 当一个方法的返回值是一个普通的类时,实际上返回的是该类的对象,我们可以使用该类的对象接收

                         抽象类

                                 当一个方法的返回值是一个抽象类时,实际上返回的是该抽象类的子类对象,我们可以使用该抽象类接收

                         接口

                                 当一个方法的返回值是一个接口时,实际上返回的是该接口的实现类对象,我们可以使用接口接收

                 当方法的返回值类型是引用类型的时候,可以使用链式调用

内部类

 提高类类的安全性

内部类的概念

         将类定义在类的内部,那么该类就成为内部类

  注意: 内部类是一个相对的概念,如果A类中有一个B类,那么A类相对于B类来说就是外部类,那么B类相对于A类来说就是内部类


内部的分类

     1.成员内部类

     2.局部内部类

     3.静态内部类

     4.匿名内部类


内部类的特点:

     1.内部类可以直接访问外部类的所有成员

      2.外部类如果需要访问内部类成员,必须创建内部类对象

     3.内部类如果编译后生成2个字节码文件,格式如下

                         外部类$内部类.class

                         OuterClass$InnerClass.class

     4.要访问内部类的成员非常麻烦,而且造成程序耦合性增高,可读性降低,所以内部类要慎用

成员内部类


成员内部类

           掌握如何访问成员内部类的成员

 格式:

          外部类类名.内部类类名 对象名 = 外部类对象.内部类对象

Version:1.0StartHTML:0000000105EndHTML:0000013647StartFragment:0000000127EndFragment:0000013629

public class InnerClassDemo03 {

       public static void main(String[] args) {

               OuterClass3.InnerClass oi = new OuterClass3().new InnerClass();

               oi.show();


               oi.setNum2(100);

               System.out.println(oi.getNum2());

       }

}

class OuterClass3{


       // 成员位置

       private int num = 10;


       class InnerClass{


               private int num2 = 20;


               public void show() {

                       System.out.println(num);

                       System.out.println(num2);

               }


               public void setNum2(int num2) {

                       this.num2 = num2;

               }


               public int getNum2() {

                       return this.num2;

               }

       }


}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • static关键字 静态的,可以修饰成员变量和成员方法。 static关键字特点 1. 随着类的加载而加载 ...
    Onlyone_94b7阅读 542评论 0 0
  • 面向过程编程: 在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有...
    ALLIN5阅读 384评论 0 2
  • 静态方法static (public static $a=1) (static function) 静态方法不能...
    淡忘夏阅读 256评论 0 0
  • 2018年7月3日笔记 1.Python编程方式 面向过程:根据业务逻辑从上到下写代码函数式:将某功能代码封装到函...
    潇洒坤阅读 821评论 0 1
  • 吾乃吃货一枚,性嗜美食。喜多次品尝而不腻,异于常人。”每每回味都会给味觉带来一抹炫丽的“色彩”,五彩缤纷只因美食之...
    YOUQI928阅读 165评论 0 0