封装、继承、多态

封装、继承、多态

封装

  • 该露的露,该藏的藏

    • 程序要求“高内聚,低耦合”,高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。

  • 封装(数据的隐藏)

    • 通常,应禁止直接访问一个对象中数据的实际表现,而应通过操作接口来访问,这称为信息隐藏。

  • 属性私有,get/set

封装的意义:

  1. 提高程序的安全性,保护数据

  2. 隐藏代码的实现细节

  3. 统一接口

  4. 系统的可维护性增加了

继承

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模

  • extends的意思是“扩展”。子类是父类的扩展

  • JAVA中类只有单继承,没有多继承;一个儿子只能有一个父亲,一个父亲可以有多个儿子

  • 继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖、组合、聚合等

  • 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,用关键词extends来表示

  • 子类和父类之间,从意义上讲应该具有“is a”的关系。

 

子类继承了父类,就会拥有父类的全部方法

私有的东西无法被继承

  • object类

  • super 调用父类的构造器必须要在子类构造器的第一行

  • image-20220405160718932

  • 方法重写

    image-20220405162419974

多态

动态编译:类型:-可扩展性

同一个方法可以根据发送对象的不同而采用多种不同的行为方式

一个对象的类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)

多态存在的条件:

  • 有继承关系

  • 子类重写父类方法

  • 父类引用指向子类对象

注意:多态是方法的多态,属性没有多态性

instanceof 类型转换 引用类型,判断一个对象是什么类型

  •  父类引用指向子类的对象
     把子类转换为父类:向上转型
     把父类转换为子类:向下转型,强制转换
     方便方法的调用,减少重复的代码,简洁

 

static关键字

     {
         //代码块(匿名代码块)赋初值
         System.out.println("匿名代码块");
    }
     static{
         //静态代码块,只执行一次
         System.out.println("静态代码块");
    }
     public Person(){
         System.out.println("构造方法");
    }
 运行结果:
     静态代码块
     匿名代码块
     构造方法
     
 静态>匿名>构造方法
     静态代码块之执行一次

 

抽象类

 不能new这个抽象类,只能靠子类去实现它:约束!
 抽象类中可以写普通方法
 抽象方法必须卸载抽象类中
 抽象的抽象:约束
 
 //思考题?
    //存在构造器吗?
    //存在的意义? 提高开发效率

 

接口

普通类:只有具体的实现

抽象类:具体实现和规范(抽象方法)否有!

接口:只有规范!自己无法写方法~专业的约束!约束和实现分离:面向接口编程~

接口的本质是契约

声明类的关键字是class,声明接口的关键在是interface

接口是面向的精髓,是对对象的抽象

image-20220406112044509

 

 

posted @   高地舞者  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示