面向对象(对封装,继承,多态,接口的总结)

    xiaoxiao2021-12-14  22

    面向对象 以下是我对近期学习面向对象的整理的干货: (满满的干货,主要是总结的老师上课时候总结的重点) 主要学习了四大版块:封装,继承,多态,接口 Java学习中,主要使用的就是面向对象的思想(面向对象就是采用“现实模拟”的方法设计和开发程序。),所以这四大版块的学习和掌握是非常重要的。 封装:(set get private this) 封装顾名思义就是打包装起来,为什么要封装呢?封装又有什么好处? 封装就是隐藏类的一些具体实现,通过提供一些接口,来实现一些功能。将类的状态信息隐藏在类的内部,不允许在类的外部直接访问,而是通过这个类提供的一些方法,来对属性进行操作以及访问。 封装的好处:1·控制存取属性值的语句,来避免对数据的不合理操作 2·一个封装好的类,是非常容易使用的。 3·代码更加模块性,可读性。 封装的步骤:改属性的可见性来限制对属性的访问;为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的存取;在赋值方法中,加入对属性的存取控制语句。 封装的难点:搞清楚get和set的作用,get是获取,然后返回值,set是设置,传参数进去。 继承:(extends) 子类 扩展(继承)父类的语法规则如下: 修饰符 class 子类类名 extends 父类类名


    共有的东西 提取到父类,子类是 存储子类自己特有的东西,父类是没有的,父类是共性,子类是特性。 你的是我的(有些不能被继承的东西除外), 我的还是我的。


    继承的注意点: 1·.类继承的第一个注意点:类的构造方法,不可被继承 java中的类,都是直接或者间接的继承自 java.lang.Object类的,如果一个类,产生后没有指定继承自哪个类,那么默认直接继承自java.lang.Object 构造方法一旦程序员自己给定了,那么jvm不再提供默认的 无参构造方法。 如果我们自定义了 父类的构造方法, 那么父类的 无参构造方法 会被收回,当子类在调用无参构造方法 new对象的时候, 如果父类中没有找到 无参构造方法程序出现运行时错误。 2·虽然不能继承构造方法,但是我们可以 在子类的构造方法中通过关键字 super 来调用到 父类的构造方法 用super的注意点: 1.super 关键字,它没有引用任何对象, 它的作用就是 通知编译器,到我的父类中找这个方法调用它。 2.super关键字,也可以用在其他方法中,不仅仅是构造方法 3.它跟this调用构造方法的重载一样, 要用在第一行。 this 是指当前正在初始化的这个对象的引用 3·private 修饰的成员变量或者方法,是这个类私有的,不能在类的外部,以及子类中直接访问,子类不能继承 private修饰的成员变量和方法。 但可以用set和get来获取 4·如果子类和父类不在同一个包,protected修饰的属性和方法 也是可以被继承下来的。 5· final 修饰类:不允许被继承 多态 多态: 一个对象 的多种状态 多态的三要素: 1.一定要有继承 2.一定要重写 3.父类的指针,指向子类的对象 Pet p=new Cat(); 多态的强制转换 多态的强制转换可以分为向上强转型和向下转型 这个还是用例子来解释吧!

    class A4 extends paper { void wirte() { System.out.println("用A4纸张写字"); } void test() { System.out.println("test"); } }class A5 extends paper { void wirte() { System.out.println("用A5纸张写字"); } }class Test { public static void main(String[] args) { //向上转型 paper p=new A4(); /* 向上强制转换时不用强制,是因为父类的东西子类都有,所以编译器去子类中找这个方法时是能找到的,所以不会报错 */ p.wirte(); //向下转型 A4 a=(A4)p; /*因为p是父类的指针,所以如果想调用子类特有的属性时,编译器会报错,因为父类中没有子类特有的属性,编译器去父类中找不到这个方法就会报错,所以要在父类的p的这个对象前面加一个子类的类名A4,让编译器去子类中寻找这个方法.*/ a.test(); paper b=new A5(); b.wirte(); } }abstract class paper { abstract void wirte(); }

    接口(interface implements) 接口使用的总结: 1.接口本身 是一个特殊的类 2.接口的成员变量 默认是 public static final 修饰的,也就是说接口中的成员变量实际上是一个常量 3.接口中的 方法 都是抽象方法,默认修饰 public abstract 4.接口是不能够创建对象的 5.接口是没有构造方法 6.因为接口是提供给 类 去使用的,非抽象类去实现一个接口的时候,必须要把接口中所有的方法 都要实现。 接口的作用: 1.扩展功能 2.定义约束规范 3.程序解耦合性 接口的多态: 接口的引用类型变量 指向 接口实现类 的对象 接口实现类 —》 就是实现了这个接口的类 InkBox ink = new ColorfulInkBox(); 接口的多态实现: (1)要有接口 (2)要有 接口的实现类 (3)要让接口的引用类型变量 指向 接口实现类 的对象


    接口的多态使用方式 左边是 接口类型的 引用类型变量 右边是 实现这个 接口的类 的对象


    转载请注明原文地址: https://ju.6miu.com/read-971371.html

    最新回复(0)