Java之Java基础十二(抽象和包装器类)

一、抽象 

  • 把相同但不确定的方法提取出来,为了以后统一使用并具有多种不同的具体实现(重写)
  • 关键字:abstract (修饰抽象方法【即没有方法体,即大括号的方法】,抽象类)
  • 抽象方法必须在抽象类中,即普通方法不能有抽象类
  • 抽象类中不一定全是抽象方法;可以有普通方法;也可以没有抽象方法
  • 继承抽象类后抽象类中的抽象方法必须重写,普通方法可以不重写【抽象类就是为了让子类去具体实现】
  • 抽象类不能实例化【因为抽象类可能有抽象方法,抽象方法没有内容不能具体实现,而实例化就是类 的具体实现,所以可能会发生冲突,即不能实例化,也就是普通类为什么不能有抽象方法】,但是可 以有构造方法【构造方法不是为了实例化,而为了构造方法开辟空间的作用,目的是子类实例化时会 先调用父类构造方法】,可以使用多态
  • 抽象类中同一方法final与abstract关键字不能同时使用;private和abstract不能同时使用,因为作用冲突【即不能影响抽象方法抽象类的继承】
  • 抽象方法不能使用static,抽象方法是对象方法,要保证多样性;static修饰类方法,产生冲突
  • 子类继承抽象类后,若不想实现抽象类的抽象方法,则将子类变成抽象类,之后可以重写抽象方法, 也可以不重写,还可以用抽象方法覆盖(重写)父类的普通方法,【普通类继承抽象类中抽象方法后 不重写会破坏普通类不能有抽象方法的规则,但是改为抽象类后不会有这种情况】
public abstract class Animal {   //抽象方法必须在抽象类中,否则会报错
public static void main(String[] args) {
 //      
Animal a=new Animal();      
Animal r=new Rabbit();
 r.run();
会报错,因为抽象类不能实例化
}
 public abstract void run();  //抽象方法
public abstract void sleep();  //抽象方法
public void eat() {     
}
 }
 //可以有普通方法
System.out.println("eating")

 二、包装器类

  • 面向对象中,"一切皆为对象",但是基本类型不符合这样概念,所以把基本类型包装成类的样子
  • 包装类主要用于不同类型间的转换
  • 基本类型:byte,short,int,long,float,double,char,boolean
  • 对应包装类型 :Byte,Short,Integer,Long,Float,Double,Character,Boolean
 Integer a=2;
 int b=a;
 String c=String.valueOf(a);
 Integer d=Integer.valueOf(c);
 int e=Integer.valueOf(c);  //或者int e=Integer.valueOf(c).intValue();【基本类型和包装类
可以自动转】
String f=String.valueOf(b);
 System.out.println(a+""+b+""+c+""+d+""+e+""+f);
Integer的128陷阱
为了节省空间,当valueOf里传的值在-128到127之间时不会创建新对象,而是指向数组中存储该数的地
址,否则会new一个对象,相同内容会存储在不同地方,==对比的是地址,所以127往上会返回false

更详细包装器类和128陷阱的知识可以看下方链接

 包装器类和128陷阱

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值