JAVASE--面向对象(四)

多态:在同一个时刻体现不同的状态,多态主要体现在向不同的对象发送同一个信息,不同的对象在接受到信息后产生不同的行为(方法),对象可以用自己的方法去响应共同的信息。

多态性的表现:1.方法的重载与重写  2.子类对象的多态性

使用的前提:1.要有继承关系。2.要有方法的重写

格式:Person p=new Man();//向上转型

//虚拟方法调用:父类的引用 指向子类的实例对象,当调用方法时,实际上是子类重写父类的方法

编译时:认为p是Person类型的,所以只能通过p访问Person拥有的属性和行为,Man特有的属性和行为不能访问。

反正一句话,访问变量看声明,访问方法看实际对象类型(new出来的类型)

例子:

 

关于向下转型

1.向下转型,使用强转符:()

2.为了不报ClassCastException ,最好在向下转型前进行判断:instanceof

if(p instanceof  Woman){

         Woman w=(Woman)p;

          p.shopping();

}

 

java.lang.Object 是所有类的根父类

1.Object类仅有一个空参的构造器 public Object(){}

2.关于方法

equals(Object obj)

public boolean equals(Objec obj){

       return (this == obj);

}

1.基本数据类型:根据基本数据类型的值判断是否相等。相等返回true,不同返回false

两端的数据类型可以不同,只要值相同都返回true

2.引用数据类型:比较引用变量的地址是否值是否相等

equals():
>①只能处理引用类型变量②在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等
>像String 包装类 File类 Date类这些重写Object类的equals()方法,比较是两个对象的"实体内容"是否完全相同。
>若我们自定义一个类,希望比较两个对象的属性值都相同的情况下返回true的话,就需要重写Object类的
 equals(Object obj)方法

 toString()方法
当我们输出一个对象的引用时,会调用toString()方法。
1.public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
当我们没有重写Object类的toString()方法时,打印的就是对象所在的类,以及对象实体在堆空间的位置
2.一般我们需要重写Object类的toString()方法,将此对象的各个属性值返回。
3.像String类、Date、File类、包装类都重写了toString()方法。

 

包装类

基本数据类型由于不是类,不能够使用java类库中提供的大量方法,所以在设计上,我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变,此时相当于基本数据类型有了类的特点,这些类即为包装类(wrapper 或 封装类);

基本数据类型           包装类

boolean                    Boolean

byte                           Byte

short                          Short

int                             Integer

long                           Long

char                           Character

float                           Float

double                        Double

1.基本数据类型与对应的包装类有自动装箱、自动拆箱

 如:int i = 10;      

       Integer i1 = i;//自动装箱    

       int j = i1;//自动拆箱

2.基本数据类型、包装类---->String类:调用String类的重载的valueOf(Xxx xx);  

String类---->基本数据类型、包装类:调用相应的包装的parseXxx(String str);

  注意:String str = "123";        

       int i = (int)str;是错误的转法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值