• 面向对象(构造方法、封装、继承、多态、接口和抽象类的区别)


    目录

    一 类

    二 构造方法

    三 方法重载

    四 修饰符

    五 封装

    六 继承

    七 多态

    八 抽象类

    九 接口


    一 类

    类:就是 具有相同的属性和功能 的对象 的抽象集合
    实例:就是一个真实的对象
    实例化就是创建对象的过程

    二 构造方法

    构造方法:是为了对类进行初始化
    使用new 关键字来创建对象的时候,就是在调用构造方法

    1. package com.qing.demo.bean;
    2. public class Cat {
    3. private String name;
    4. public Cat() {
    5. System.out.println("我是无参构造方法");
    6. }
    7. public Cat(String name) {
    8. this.name = name;
    9. System.out.println("我是有参构造方法");
    10. }
    11. public String getName() {
    12. return name;
    13. }
    14. }

    测试类

    1. @Test
    2. void test1() {
    3. //等号右边的 new后面的Cat()其实就是构造方法
    4. //构造方法:是为了对类进行初始化
    5. Cat jiafei = new Cat();
    6. Cat yingduan = new Cat("灰蓝");
    7. System.out.println("英短猫的名字是"+yingduan.getName());
    8. }

    控制台

    方法重载


    方法重载:使得可以创建同名的多个方法(参数类型或参数个数必须要有所不同)
    目的:提供了函数可扩展的能力(在不改变原方法的基础上,新增功能)

    如下:方法重载需要参数类型或参数个数有所不同,跟参数变量名无关

     

    四 修饰符


    为什么有时候使用修饰符public,有时候使用private?

    这就好像我们的房子,我们不希望房子是全透明的,那样你在家里的所有活动都被看得清清楚楚,毫无隐私。
    我们的房子一般是有门有窗,但更多的是不透明的墙,门和窗其实就是public,而房子内的东西其实就是private

    五 封装


    每个对象都包括它能进行操作的所有信息(这个对象不必依赖其他对象来完成自己的操作)

    封装的好处


    1 良好的封装能减少耦合
    2 类内部可以自由修改
    3 类具有清晰的对外接口(比如public修饰的属性和方法)

    封装 就是我们房间内所有的摆设都可以随意的改变而不用影响他人。
    封装对象暴露在外的属性和方法(门窗),可以流通空气、带来阳光、供人进出。

    六 继承


    继承代表了 is a 的关系

    如果两个对象A和B,可以描述为B是A,则表明B可以继承A
    比如 猫是哺乳动物,猫可以继承哺乳动物。

    继承者还可以理解为被继承者的特殊化

    继承者除了具备被继承者的特性外,还具备自己独有的个性。
    比如 猫除了有哺乳动物的 胎生、哺乳特点,猫还可以抓老鼠,可以爬树。

    如果子类继承于父类


    1 子类拥有父类非private的属性和功能
    2 子类具有自己的属性和功能(子类可以扩展父类没有的属性和功能)
    3 子类还可以用自己的方式实现父类的功能(方法重写)

    继承的优点

    把子类所有公共的部分放在父类,使代码得到了共享,避免了重复。

     继承的缺点

    父类变,子类不得不变。

    七 多态


    猫和狗都是动物,动物会叫,但猫和狗的叫声是不一样的。

    Cat和Dog都继承Animal ,Animal 里有方法jiao(),Cat和Dog各自重写jiao()方法,当animal调用jiao()方法时,叫声就不一样,这就是多态。

     测试代码

    1. Animal animal1 = new Cat();
    2. Animal animal2 = new Dog();
    3. animal1.jiao();
    4. animal2.jiao();

    结果

    八 抽象类

    把实例化没有意义的父类 可以改为抽象类
    把方法体没有意义的方法改为 抽象方法

    注意点

    1 抽象类不能被实例化
    2 抽象方法是必须被子类重写的方法
    3 如果类中包括抽象方法,那么类就必须定义为抽象类

    可以考虑让抽象类拥有尽可能多的共同代码,拥有尽可能少的数据。
    抽象类通常代表一个抽象概念,它提供一个继承出发点。
    当设计一个新的抽象类时,一定是用来继承的。
    所以,在一个以继承关系形成的结构里,树枝节点应该是抽象类,树叶节点应该是具体类。
     

    九 接口

    注意点

    实现接口的类就必须实现接口中所有方法
    接口中的方法不能有修饰符(接口中所有方法都是默认 public abstract)
    一个类可以实现多个接口
    接口的概念可以让用户和其他开发人员更容易理解其他人的代码
    接口的名字,前面要加一个大写字母I

     

    接口和抽象类的区别


    1 一个类只能继承一个抽象类,但可以实现多个接口
    2 抽象类里可以有抽象方法,也可以有不抽象的方法;接口中所有方法都是抽象的;
    3 类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象
    如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象,使用继承抽象类。

    比如飞机、鸟、超人是完全不相关的类,但都具有飞的行为,此时让他们实现相同的飞行接口即可。


    实现接口和继承抽象类并不冲突。

    从设计的角度讲,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类。
    而接口是根本不知子类的存在的,方法如何实现还不确定,预先定义了。

    抽象类是自底而上抽象出来的,接口是自顶向下设计出来的。
     

  • 相关阅读:
    Java jvm 内存溢出分析
    科学高效备考AMC8和AMC10竞赛,吃透2000-2024年1850道真题和解析
    知识分享应用-后端代码从0构建
    【AXI】解读AXI协议乱序机制
    【供应链】供应链的底牌
    以太网——ARP协议工作原理
    MyBatis简述
    WEBPACK基础配置【总结】
    chrome 插件 Mobile simulator
    面试题:线程池灵魂8连问,你挡的住吗?
  • 原文地址:https://blog.csdn.net/m0_45877477/article/details/126548301