多态及内部类简介

多态概述

1. 多态的字面意思就是有多种形态。就是说同一行为会有多种不同表现形式。当一个类引用不同的对象时就会有多种表现形式
2. 多态存在的前提条件:多态的存在必须要有继承,也就是说需要父类子类的存在。

多态的实现

多态的实现依赖与向上造型,向上造型指的是一个父类型引用指向子类型对象的过程。
向上造型的格式如下:
父类型 变量名 = new 子类型对象();
接口类型 变量名 = new 实现类对象();

        Animal a=new Cat();
        Animal b=new Dog();

除了向上造型以外还有向下造型,也就是强制转换类型。

        Cat c = (Cat) a;
        Dog d = (Dog) b;

列子

父类:

package test;

public class Father {
    int age = 40;

    void getAge() {
        System.out.println(age);
    }

    void getScore() {

    }

}

子类1:

package test;

public class Son extends Father {
    int age = 20;
    int score = 90;
    int c=22;

    @Override
    void getAge() {
        System.out.println(age);
    }

    @Override
    void getScore() {
        System.out.println(score);
    }

    void aaa() {
        System.out.println("111");
    }
}

子类2:

package test;

public class Dao extends Father {
    int age = 13;
    int score = 88;

    @Override
    void getAge() {
        System.out.println(age);
    }

    void getScore() {
        System.out.println(score);
    }
}

主方法:

package test;

public class Main {
    public static void main(String[] args) {
        Father a = new Son();
        System.out.println(a.age);//输出父类age
        a.getAge();
        a.getScore();

        Father b = new Dao();
        b.getAge();
        b.getScore();
        Son s = (Son) a;//调用子类自己的方法
        s.aaa();
        System.out.println(s.age);
//        Son l=new Son();
//        l.aaa();
//        System.out.println(l.c);
//        System.out.println(l.age);
    }
}

注意事项: 主方法中的**System.out.println(a.age);**输出的是父类中的age。我们通过向上造型定义的a在调用变量时会调用Father中的值,而通过a调用方法是会优先调用子类中重写的方法。
如果在子类中定义了自己的方法则可以通过向下造型来实现,向下造型和注释行中实现效果是一致的,用向下造型可以实现多态。

内部类简介

内部类顾名思义就是类中的类,我们可以在类中再写一个类。
内部类分类: 1.成员内部类2.静态内部类3.局部内部类

成员内部类

public class Outer{
        // ...
        public class Inner{
          //....
        }
    }

使用:
内部类中, 可以随意使用外部类成员
外部类中, 使用内部类成员时需要创建内部类对象
无关类中, 使用内部类成员
1.间接调用, 在外部类方法中调用内部类方法
main方法中, 调用外部类方法
2.直接调用, 需要创建内部类对象
外部类.内部类 a = new 外部类().new 内部类();
内部类和外部类有同名成员变量
外部类的成员变量: 外部类.this.变量
内部类的成员变量: this.变量

静态内部类

静态内部类和成员内部类差不多,用了静态修饰符。

局部内部类

局部内部类需要在方法中定义,并只在方法中有效。在局部内部类中, 使用局部变量, 必须是final的。局部内部类是一次性的类, 只能用一次。不能使用权限修饰符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值