java基础

final

对象实例化

String

JDK,JRE,JVM区别

JDK:JAVA运行工具    JRE:JAVA运行时环境   JVM:JAVA虚拟机

 

 

重载和重写

重载和重写都是多态的表现,区别在于重载是编译时多态,重写是运行时多态。

重载

发生在同一类中,方法名相同,参数列表不同(个数,顺序,类型),返回值和访问修饰符可以不同(但不能只修改这两者,因为会造成混淆,调用方根本无法区分调用的到底是哪一个方法,会在编译时报错)

public int add(int a,int b){};
public String add(int a,int b){};
//编译时报错

重写

发生在父子类中,方法名相同, 参数列表相同,返回值,抛出异常范围小于等于父类,访问修饰符大于等于父类,如果父类的方法是private,那么子类不能重写这个方法。

接口和抽象类

  • 一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
  • 抽象类的成员变量可以是各种类型的,但接口的成员变量只能是 pulic static final(公共的静态的常量)。
  • 抽象类中可以存在普通成员函数,而接口中只能存在 public abstract()方法

接口设计的目的,是对类的行为进行约束(更准确的说是一种“有”约束,因为接口不能规定类不可以有什么行为),也就是提供一个机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制

而抽象类设计的目的,是代码复用,当不同的类,具有某些相同的行为A,且其中一部分行为实现方法一致时B,可以让这些类派生于一个抽象类。在这个抽象类中实现B,避免了让所有的子类来实现B, 这就达到了代码复用的目的。而A-B的部分,留给各个子类自己实现。正是因为A-B在这里没有实现,所有抽象类不允许实例化出来(否则当调用到A-B时,无法执行)。

抽象类是对类本质的抽象,表达的是is-a的关系,比如 BMW is a car。抽象类包含并实现子类通用特性,将子类存在差异化的特征进行抽象,交由子类去实现。

接口是对行为的抽象,表达的是 like-a的关系,比如 Bird like a Aircraft(像飞行器一样可以飞),但其本质上 is a Bird。接口的核心是定义行为,即实现类可以做什么,至于实现类主体是谁,是如何实现的,接口并不关心。

使用场景:当你关注一个事务的本质,用抽象类;当你关注一个操作的时候,用接口。

==和equals的区别

==  基本数据类型,比较的是数值是否相等

       引用类型,比较的是对象引用地址是否相等(栈中),在堆中是否是同一块区域

equals  只能用来判断对象是否相等(常见的是字符串是否相等)

          object没有进行重写,底层原理就是==

          重写之后比较的是引用对象的内容

 

posted @ 2023-01-13 15:25  早日月薪五万  阅读(12)  评论(0编辑  收藏  举报