Web前端【Java笔记篇(封装、继承、多态)】

对象的特点:封装、继承、多态。

一、封装
       封装的概念:就是将属性私有化,提供setter和getter方法进行访问

        作用:保证数据的合理

二、继承

1、继承的概念:子类通过继承,可以使用父类中的属性和方法,及类与类之间特征和行为的赠与 或获得

         满足继承关系的前提:二者必须具备is a关系
2、语法:class 子类 extends 父类{}

      创建子类对象=父类共性+子类独有

3、继承的好处:减少代码的冗余,提高代码的复用性

4、继承的特点:Java只支持单继承,不支持多继承,形成集体系结构

5、不可被继承

      ①构造方法

     ②private修饰的属性和方法

     ③父子类不在同一个package中,使用default修饰的属性和方法。
三、多态:父类引用指向子类对象。

      1.概念:父类引用指向子类对象。
          注意:
                父类引用只能调用父类中所定义的属性和方法,子类独有的属性和方法不可调用。
                二者必须存在继承关系
        
       2.多态中的方法覆盖:
        子类覆盖父类中的方法,使用父类引用调用该方法,执行的是覆盖之后的。

       3.好处:
                降低耦合性
                屏蔽子类间的使用差异
        
       4.向上转型、向下转型(掌握)     
                     ①、 向上转型(装箱):父类引用中保存的是子类对象。
                              举例:Dog d= new xiao();
                              注意:父类引用只能调用父类中的属性和方法。
            
                    ②、向下转型(拆箱):将父类引用中所保存的真实类型强制转换为自身类型。
                            举例:Xiao x = (Xiao)d;
                            注意:只有转换为子类真实类型,才可以调用子类中独有属性和方法。

四.访问修饰符

     public:所有的类均可访问

     private:除了本类,其它的类均不可访问

     protected:除了本类和同一个包下的,以及该类的子类,其它的类均不可访问

     默认:除了本类和同一个包下的类,其它均不可访问
五、super
            1.用法:
                super.成员方法():表示调用父类中的成员方法
                super.属性:表示调用父类的属性
                super()和super(实参):表示调用父类的构造方法
            注意:如果构造中没有this()或者this(实参)或者super(实参),每一个构造方法中首行都隐式存在super()。
            在一个构造中this()或者this(实参)或者super()或者super(实参)因为都要求在首行,所以只能使用一个。

六、方法的覆盖
    1.什么时候需要覆盖?
        父类的方法无法满足子类的需求,需要覆盖。
    2.覆盖的要求:
        ①返回值类型、方法名、形参列表和父类完全一致
        ②修饰符和父类相同或者比父类更宽
        注:当子类覆盖父类方法后,调用该方法,执行的是覆盖之后的。
    3.重载和覆盖区别?
        重载:一个类中定义多个相同名称的方法。
            要求:
                1.方法名相同
                2.参数列表不同(类型、个数、顺序)
                3.与访问修饰和返回值类型无关
    
        覆盖:父类方法无法满足子类需求,需要进行覆盖。
            要求:
                1.返回值类型、方法名、形参列表和父类完全一致
                2.修饰符和父类相同或者比父类更宽
————————————————
版权声明:本文为CSDN博主「qq_58849698」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_58849698/article/details/118356396

你可能感兴趣的:(Java,笔记)