Java面向对象的三大特征:封装、继承、多态详解

作为面向对象的最重要的概念,封装、继承和多态一直是面试Java时的热门话题,准确理解三大特征是非常重要的,这篇文章对该三大特性有较为详细的介绍。

封装

封装性在Java当中的体现:

  1. 方法就是一种封装
  2. 关键字 private 是一种封装
    封装就是将一些细节信息隐藏起来,对于外界不可见。

继承

继承是多态的前提,如果没有继承,就没有多态。
继承关系当中的特点:

  1. 子类可以拥有父类的“内容”
  2. 子类还可以拥有自己专有的内容。

在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:

  1. 通过子类对象访间成员变量:
    等号【左边】是谁,就优先用谁,没有则向上找。
  2. 间接通过成员方法访间成员变量:
    该方法【属于谁】,就优先用谁,没有则向上找。

区分子类方法中重名的三大变量:
局部变量(定义在方法中的变量):直接写成员变量名
本类的成员变量:this.成员变量名
父类的成员变量:super.成员变量名


在父子类的继承关系当中,创建子类对象,访问成员方法的规则:
创建的对象是谁,就优先用谁,如果没有则向上找。

注意事项:
无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类。


继承关系中,父子类构造方法的访问特点:

  1. 子类构造方法当中有一个默认隐含的super() 调用,所以一定是先调用的父类构造,后执行的子类构造。

  2. 子类构造可以通过 super关键字来调用父类重载构造。

  3. super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造调用多次super构造。

  4. 只有子类构造方法才能调用父类的构造方法。

总结:
子类必须调用父类构造方法,不写则赠送 super();写了则用写的指定的 super调用, super只能有一个,还必须是第一个。


  • Java语言是单继承的,一个类的直接父类只能有唯一一个。
    原因:多个父类的同名方法会产生歧义
  • Java语言可以多级继承
  • 一个类的直接父类是唯一的,但是一个父类可以拥有很多个子类。

多态

一个对象拥有多种形态,这就是对象的多态性

代码当中体现多态性,其实就是一句话:父类引用指向子类对象。
格式:

父类名称 对象名 = new 子类名称()// 或者:
接口名称 对象名 = new 实现类名称()

多态中成员变量的使用特点:
访问成员变量的两种方式:

  1. 直接通过对象名称访问成员变量:看等号【左边】是谁,优先用谁,没有则向上找。
  2. 间接通过成员方法访问成员变量:看该方法【属于谁】优先用谁,没有则向上找。

口诀: 编译看左边,运行看左边。


多态中成员方法的使用特点:
在多态的代码中,成员方法的访问规则是:
看new的是谁,就优先用谁,没有则向上找。

口诀: 编译看左边,运行看右边。

public class Demo() {

    // 父类
    public class Fu {
        public void method() {
            System.out.println("父类方法");
        }
        public void methodFu() {
            System.out.println("父类特有方法");
        }
    }
    
    // 子类
    public class Zi extends Fu {
        public void method() {
            System.out.println("子类方法");
        }
        public void methodZi() {
            System.out.println("子类特有方法");
        }
    }
    
    public static void main(String[] args){
        Fu obj = new Zi(); // 多态
        
        obj.method(); // 父子都有,优先用子,输出子类方法
        
        obj.methodFu(); // 子类无,父类有,向上找父类,输出父类特有方法
        
        // obj.methodZi(); // 编译出错,因为编译的时候看左边,左边是父类,而父类中没有methodZi方法
    }
}

使用多态的好处:
无论右边new的时候换成哪个子类对象,左边调用的格式都不会变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值