javaSE——面向对象(细节)

1.类成员属性的初始值

普通成员属性:

普通成员属性可以不用显示初始化即可使用,此时候成员变量的值为其类型的初始值。但被 final 修饰的成员属性为常量,需要在定义是初始化值。

引用成员属性:

引用类型都需要初始化后才可使用,因为引用类型的初始值为null,代表不具备存储数据的内存空间,直接使用会造成程序运行异常(比如:空指针异常)。

2.方法参数传递

java只有值传递。基本数据类型传递的是变量的具体的值。引用类型传递对象在堆空间的地址值。

3.可变API 与 不可变API

可变API:再分配内存空间之后,可以在自己的内存地址上修改数据,添加数据。
不可变API:在增加数据时,需要重新 分配内存。

4.对形参的操作是否会影响到实参

当方法中的形参在没有调用不可变API之前,形参的任何改变都将影响实
参的状态,而当形参执行了任何不可变API之后,形参和实参之间就断开
了这种状态联系

5.构造方法

一旦显式地定义了构造方法,默认构造方法自动消失,即便显式定义的构
造方法不是无参的。

6.this

对象被创建时会为其分配一个地址值,此地址空间内保存着对象的一些信息(如:属性,方法…),其中还有 一个this。this 代表着此对象所在的空间,是一个是实实在在的一个自身的引用。因此this跟其他引用一样,在外部使用时有权操作此对象公开的方法。
构造方法中调用this,必须在第一行。

7.private

成员访问控制符。被其修饰的变量和方法,只能在其本类的内部被使用。

8.继承

  • 子类无法继承父类的构造方法
  • 当构建子类对象时会优先隐式自动调用父类的无参构造方法,而且这个构建调用过程是从父类“向外”递归扩散的。

9.super

super 与 this 在一个方法中不可同时存在。
super不能当作引用传递给其他的调用者。

10.多态环境下对属性和方法的调用特点

调用属性:引用持有者,调用的属性是自身声明的类型的 属性。
调用方法:调用方法时,调用的是具体子类中的方法。

11.instanceof运算符

instanceof用来判断对象是否属于某个类的实例。(对象 instanceof 类)如果对象的类型是后面提供的类或其子类,则返回true,反之返回false。

12.类与类之间的关系

关联关系

关联表示has-a关系,如学生拥有一个课程,往往表现为B作为A的属性存
在。

依赖关系

依赖体现了“ use a”关系,如 方法的参数体系。

强弱关系

依赖 < 关联 < 聚合 < 组合

13.类成员的访问控制符

权限等级:public > protected > default > private

14.抽象

  • 抽象类不能实例化
  • 构造方法和final、static方法,不可以修饰为abstract

15.JDK8接口的默认方法

  • 默认方法是库/框架设计者的后悔药。对于以前的遗留代码,大家都不知
    道有这个新方法,既不会调用,也不会去实现,如同不存在;编写新代码
    的程序员可以将它视为保底的方法体。类型层次中任何符合override规则
    的方法,优先于默认方法,因为遗留代码可能正好有同样的方法存在。
  • 默认方法的声明很简单,直接在接口中把方法声明为default,之后再写
    方法的实现即可。

16.static

  • static成员并不存放在对象对应的堆空间中。而是存放在方法区中。
  • 静态成员方法没有this引用。
  • JDK1.5中引入了“Static Import”机制,借助这一机制,可以用略掉所在的
    类或接口名的方式,来使用静态成员
import static java.lang.Math.abs;

17.包装器

在自动装箱拆箱过程中,只有数值是byte范围内的时候,才使用到常量
池,否则都是分配新的内存空间;

18.Lambda表达式

  • 在lambda表达式中访问外层作用域和老版本的匿名内部类中的方式很相似
  • 可以直接访问标记了final的外层局部变量,或者实例的成员变量以及静态变量
  • 和匿名内部类不同的是,局部变量可以不用声明为final,代码同样能够正确执行,但变量必须不可表达式的代码修改(即隐性的具有final的语义)识点5-其他内部类相关技术
  • 有一个和接口的默认方法相关的要点需要特别留意。
  • Lambda表达式中是无法访问到默认方法的。

19.操作符( :: )

主要用于绑定 静态方法、成员方法 或 构造方法的绑定。一般用于函数式接口。
所谓绑定是指,声明一个类型的引用,将此类型中 的方法与指定的方法进行绑定。

绑定静态方法
interface A{  Integer getInt();   }
A a = Integer::valueof
绑定成员方法
interface A{ void fo(); }
class B{ void bo(){} }
B b = new B();
A a = b::fo();
a.fo();

将接口A中的方法 与 类B中的bo方法绑定。实际执行时,执行的内容是B中的。

绑定构造方法
interface A{ void fo(); }
class B{  }
A a = B::new;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值