java Final 多态 抽象 接口 Object 知识点整理

2022/1/12 22:03:52

本文主要是介绍java Final 多态 抽象 接口 Object 知识点整理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

final 是个修饰符 表示最终的 不可更改的

     修饰的类 不能被继承

     修饰的成员方法不能覆写

     修饰的变量不能二次赋值  也没有默认值 必须显示赋值

     一般把final修饰的静态变量也叫作常量

     public static final 数据类型 变量名=值;

父类引用指向子类对象

父类引用 : 指的是 用父类型声明的引用类型变量

指向 : 通过内存地址可以找到哪个对象

子类对象 : new 子类 创建的堆内存对象

子类 变量 = new 子类();

Cat c = new Cat();

父类类型 变量名 = new 子类();

Animal a = new Cat();

软件设计六大原则 :

1 单一职责原则 : 功能单一,只拥抱一种变化

2 里氏替换原则 : 能使用父类的情况下,一定可以使用子类

因为继承,父类有的功能,子类都有

3 依赖倒置原则 : 细节应该依赖抽象,而抽象不应该依赖细节

4 接口隔离原则 : 先不管

5 迪米特法则 : 最少知识原则,和其他类或对象,尽可能有更少的了解

6 开闭原则 : 对修改关闭,对扩展开放

多态优点

同一操作,作用于不同对象,可以有不同的解释,产生不同的结果,这就是多态性

当一件事会有多种不同实现方式的时候,我们选择依赖高层,来拥抱多种变化

本质还是降低类和细节之间的耦合度

缺点

   丢失子类特有的属性

态进行属性调用:如果父类没有 直接报错 不管子类有没有

              父类有 子类没有 直接执行父类

              父类子类都有 成员方法执行子类 因为成员方法可以覆写 其他的都执行父类

abstract:修饰符 修饰的是类是抽象类,修饰的方法是抽象方法

 抽象类  不能实例化对象

 抽象方法 没有方法体 只定义功能 没有功能的实现 并且抽象方法必须在抽象类中

       抽象类中 可以没有抽象方法

 abstract 不能和 final 同时出现  

Interface 接口 可以理解为完全抽象的一个类 里面只有抽象方法和常量

  但是从java1.8开始 允许出现静态方法和默认方法

  语法:修饰符 interface 接口名{}

  接口中的抽象方法 不需要加abstract修饰 默认都是 public abstract

  接口中 没有变量 只有常量  并且public static final 可以省略

  类和接口之间不再是继承关系 变成了实现关系 由extends 变成了implements

  接口名 变量 =new 子实现类()  也是会发生多态的

  一个类 只能继承一个类 但是可以实现N个接口 以逗号隔开 可以解决单继承功能变弱问题

  class 类名 implements 接口1,接口2,接口3..{}

  接口和接口之间 是多个继承 多个用逗号隔开

      interface 接口名 extends 父接口名1,父接口名2...{}

  一个类如果实现了一个接口 那么必须实现接口中的所有抽象方法 否则该类需要加abstract修饰

  一个抽象类 实现一个接口 可以实现 0~N个抽象方法

      如果接口和抽象类都能完成这件事 优先使用接口 会保留类的继承

Object是所有类的祖类  是java中提供的根类

  一个类没有显示继承另一个类的时候 默认继承object

  Object xx=new xxx(): 是可以发生多态的

  == :比较基本类型的时候 比较值的大小,比较引用类型的时候 比较的是内存地址

 比较内存地址没有价值 一般会比较两个对象的属性值是否一致 而不是比较地址是否一致

  equals():该方法的设计目的 用来比较两个对象是否相等 但是 默认比较地址

  java中的 Object里面的equals方法 默认比较内存地址(==),需要我们根据要求进行重写



这篇关于java Final 多态 抽象 接口 Object 知识点整理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程