Java教程

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

本文主要是介绍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 知识点整理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!