面向对象知识点总结(上)

 面向对象知识点总结

一、概述
面向对象三大特征:
    1.封装:不限于 JavaBean 规范封装,包括方法封装,工具封装,框架封装...
    2.继承:Java 继承的模式是一个类单继承模式 接口多继承模式 
            继承关注的重点是【方法继承,保证方法的延续性,沿用性,以及数据类型的统一】
    3.多态:程序员经典理解:编译看左,运行看右--使用最多,体验最好

二、面向对象—>封装

 2.1 JavaBean 规范实体类要求

① 要求所有成员变量全部 private 私有化修饰
② 必须提供所有成员变量对应的 getter and setter 方法
③ 必须提供无参数构造方法

​     构造方法作用
​    ① 提供数据类型,构造方法的名称要求必须是类名,JVM 会根据当前构造方法的名称 明确实例化对象的数据类型是哪一个,计算得到对应所需的内存空间
​    ②用于初始化类对象成员变量数据内容

new:
    ①在内存堆区根据当前数据类型所需申请对应的内存空间
    ②申请的内存空间进行数据擦除

new + 构造方法 是实例化对象的一种形式,也是最为基础的形式。

2.2 权限修饰符

| 权限修饰符 |              作用域or作用范围              |
| :--------: | :----------------------------------------: |
|   public   | 类内部 、同一个包、不同包的子类 同一个工程 |
| protected  |      类内部 、同一个包、不同包的子类       |
|  private   |        私有,有且仅可以在本类中使用        |
|  package   |              类内部、同一个包              |
|  friendly  |              类内部、同一个包              |

package:用package打包在一起的class ,叫在同一个包中,没有使用package打包的,在同一目录下的类也会被视做同一个包。

friendly:用friendly修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中.

三、 面向对象—>继承

 3.1 基本格式和特征
 class A extends B {
 }
A 类是 B 类的一个子类
B 类是 A 类的唯一父类 
    
特征:
    ① 父类中非私有化成员(成员变量和成员方法)都可以继承给子类使用
    ②父类中私有化成员子类无法获取
    ③实例化子类对象会默认调用父类的无参数构造方法。
    ④父类构造方法是用于继承给子类数据内容对应内存空间初始化操作使用的方法。
       JVM 设计规则--【先有父,再有子】
 3.2 重写方法 Override method

重写操作要求:
    ①要求方法声明完全一致,包括 返回值类型,方法名和形式参数列表
    ②权限修饰符子类权限必须大于等于父类
    ③Java 原作者要求,重写方法必须有 @Override 注解,@Override 是开启重写语法格式严格检查

 3.3  重载方法 Reload
同一个类,或者同一个接口内
重载方法要求
    ①方法名必须一致
    ②方法形式参数列表数据类型必须不同
    ③返回值类型无限制
    ④权限修饰符无限制

3.4 abstract 关键字【重点】

abstract 关键字首当其冲是针对于方法的约束和修饰,增强方法后期的自主性。abstract 修饰的方法相当于制定了规则,主要是方法的参数**【入参】**和返回值**【出参】**,后续的子类或者实现类,可以根据实际的开发情况选择合理合适的方式完成代码实现,提升代码的可复用性和特征性。

对于程序员而言,abstract 修饰方法在后续的使用中,可以降低方法冗余,提升开发效率,增强开发体验。

语法特征:
 1. abstract 修饰的方法有且只有方法声明,没有方法体
 2. abstract 修饰方法有且只能定义在 abstract 修饰的类内或者 interface 接口内
 3. 一个非 abstract 修饰类继承 abstract 类或者 遵从 interface 接口,要求实现在 abstract 类中或 interface 接口中有可能存在的 abstract 修饰方法。
 4. 阿里巴巴开发规约要求(AJCG) abstract 修饰的类推荐使用 Abstract 或者 Base 类名开头

3.5实例化子类对象调用父类无参数构造方法


class GrandFather {
    public GrandFather() {System.out.println("GrandFather类 无参数构造方法");}
}

class Father extends GrandFather {
    public Father() {System.out.println("Father类 无参数构造方法");}
}

class Son extends Father {
    public Son() {System.out.println("Son 类无参数构造方法");}
}

public class Demo2 {
    public static void main(String[] args) {
        Son son = new Son();
        /*
        Father类 无参数构造方法
        Son 类无参数构造方法

        Java 中的规定,实例化子类对象,会自动调用父类无参数构造方法,用于初始化父类可以给予
        子类使用的数据内容,方法空间。【注意】这里父类构造方法没有创建父类对象的能力。
        */
        System.out.println(son);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值