Java基础

面向对象三大特征

一、封装

通过使用访问控制符

1、将对象的的成员变量和实现细节隐藏起来,不允许外部直接访问。

2、把方法暴露出来,让方法来控制对这些成员变量进行安全的访问和操作。


二、继承

Java的继承是单继承,通过继承来实现对父类的扩展。


三、多态

同样的事物在不同情况下表现出不同的状态。具体到Java,就是相同类型的变量、调用同一个方法时呈现出多种不同的行为特征。


对象初始化顺序

父类静态初始化块-〉子类静态初始化块-〉父类普通初始化快-〉父类构造器-〉子类普通初始化块-〉子类构造器


自动装箱与自动拆箱

是基本数据类型和其包装类型的相互转化。
查看Integer类源码,-128-127之间的整数自动装箱为Integer实例,并放入一个名为cache的数组中缓存起来。以后-128-127自动装箱成一个Integer实例时,实际上是直接指向对应的数组元素,而把一个不在-128-127范围内的整数自动装箱成Integer实例时,需要重新创建一个实例。


不可变类

1、private和final修饰符来修饰该类的成员变量
2、提供带参构造器,用于根据传入参数初始化成员变量
3、仅提供getter方法
4、有必要的话重写equals()和hashCode()方法

接口和内部类

接口体现的是一种规范,规定了实现者可以向外提供哪些服务。抽象类体现的是一种模板方法模式,根据需求完善父类抽象方法。在用法上二者也有区别:
1、接口只能包含抽象方法、静态方法、默认方法,而抽象类还可以有普通方法。
2、接口只能定义静态常量,而抽象方法还可以定义普通成员变量。
3、接口不包含初始化块,抽象类里可以包含。

重写equals()和hashCode()方法
class  A{
     int a;
     int b;

     public int hashCode(){
             final int prime=31;
             int result=1;
             result=prime*result+a;
             result=prime*result+b;
             return result;
     }
    
     public boolean equals(Object obj) {
            if(this==obj)
               return true;
            if(obj==null)
               return false;
            if(obj.getClass()!=A.class)
                return false;
            if(this.a!=obj.a ||  this.b!=obj.b)
                return false;
            return true;
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值