- 浏览: 76044 次
- 性别:
- 来自: 天津
-
文章分类
最新评论
第一:向下转型
1.向下转型:
Animal a=new Dog(); Dog d=(Dog)a;这就是向下转型,注意Dog d=(Dog)a中必须是Dog类型的a才行。向下转型以后就不是多肽了
2.instanceof 关键字的引出:
向下转型以后将失去多肽的效果,向下转型指向转变成具体的子类,因此不能统一写的能力了(不能统一写成animal类了,只能把animal分别写成dog,cat,pig)。但是此对象到底是dog、cat、pig中的哪个呢?为了解决这个问题,我们引入了instanceof 关键字,用instanceof 做出判断
3.instanceof 关键字的使用:
if(ani instanceof Dog),这是向下转型的时候用到的。判断ani这个变量是不是dog类型,如果是dog的话,就可以向下转型成dog:Dog d=(Dog)ani
第二:object类:
1.object类的定义
object类是所有类的父类,所有类都实现这个类的方法。一个类间接或者直接的继承了object类。
2.object类的声明
Object obj=new 任何对象。
注意:object类可以声明成任何类型的对象,因为object类是根类,此时就相当于发生了向上转型了。因为任何类默认情况下就继承了object类
3.object类的常用方法:
1).==:比较的是栈内存的地址
2).equals:默认(object类)比较的也是栈内存的地址,我们可以重写object(父类)中的equals方法,让他比较堆内存的属性值(数据).
3).tostring是输出对象的地址,我们可以重写,重写获得对象属性值(具体值)
4).finalize:垃圾回收器,释放系统资源:当对象的引用消失了就把该对象回收了。也就是栈内存没有了,相应的堆内存数据就是垃圾了。堆内存数据不会立马回收
5).System.gc(),这是启动垃圾回收器,立马回收。如果不写这个方法的话,就由java虚拟机来回收,但是不是立马回收。
当程序结束的时候,该程序在内存中对应的.class文件将消失,当垃圾回收器确定不存在该对象的引用的时候,由垃圾回收器调用object类的finalize方法将此对象回收。释放资源
4.==是比较的地址,那么equals为什么也是比较地址呢?
因为object类中的equals方法是这样写的:
public boolean equals(Object obj){return (this==obj)},其中this就是调用equals方法的那个对象,所以虽然用了equals,但是最后还是用==进行比较的。
5.obejct类的equals默认比较的是地址,那么子类继承object类之后需要重写equals方法来比较两个对象的具体数据。
//重写父类中的equals方法,比较两个对象的属性值或者内容
public boolean equals(Object obj)
{
if(this==obj)
return true;
if(!(obj instanceof Student))
return false;
Student s =(Student)obj;
if(this.sno==s.sno&&this.age==s.age)
{
return true;
}
return false;
}
6.toString()方法在object类中默认比较的也是栈内存的地址,为了让tostring方法比较具体数据,就需要对tostring进行重写(当打印一个对象的时候,会默认调用toString(),默认获得对象的地址:system.out.print("s="+s)相当于system.out.print("s="+s.toString()))
//重写toString ,返回对象的内容
public String toString()
{
return "学号:"+sno+" 年龄:"+age;
}
7.finalize方法在object类中是这样定义的:
protected void finalize throws Throwable(){},
该方法不是抽象方法,但是方法体中没东西。
1.向下转型:
Animal a=new Dog(); Dog d=(Dog)a;这就是向下转型,注意Dog d=(Dog)a中必须是Dog类型的a才行。向下转型以后就不是多肽了
2.instanceof 关键字的引出:
向下转型以后将失去多肽的效果,向下转型指向转变成具体的子类,因此不能统一写的能力了(不能统一写成animal类了,只能把animal分别写成dog,cat,pig)。但是此对象到底是dog、cat、pig中的哪个呢?为了解决这个问题,我们引入了instanceof 关键字,用instanceof 做出判断
3.instanceof 关键字的使用:
if(ani instanceof Dog),这是向下转型的时候用到的。判断ani这个变量是不是dog类型,如果是dog的话,就可以向下转型成dog:Dog d=(Dog)ani
第二:object类:
1.object类的定义
object类是所有类的父类,所有类都实现这个类的方法。一个类间接或者直接的继承了object类。
2.object类的声明
Object obj=new 任何对象。
注意:object类可以声明成任何类型的对象,因为object类是根类,此时就相当于发生了向上转型了。因为任何类默认情况下就继承了object类
3.object类的常用方法:
1).==:比较的是栈内存的地址
2).equals:默认(object类)比较的也是栈内存的地址,我们可以重写object(父类)中的equals方法,让他比较堆内存的属性值(数据).
3).tostring是输出对象的地址,我们可以重写,重写获得对象属性值(具体值)
4).finalize:垃圾回收器,释放系统资源:当对象的引用消失了就把该对象回收了。也就是栈内存没有了,相应的堆内存数据就是垃圾了。堆内存数据不会立马回收
5).System.gc(),这是启动垃圾回收器,立马回收。如果不写这个方法的话,就由java虚拟机来回收,但是不是立马回收。
当程序结束的时候,该程序在内存中对应的.class文件将消失,当垃圾回收器确定不存在该对象的引用的时候,由垃圾回收器调用object类的finalize方法将此对象回收。释放资源
4.==是比较的地址,那么equals为什么也是比较地址呢?
因为object类中的equals方法是这样写的:
public boolean equals(Object obj){return (this==obj)},其中this就是调用equals方法的那个对象,所以虽然用了equals,但是最后还是用==进行比较的。
5.obejct类的equals默认比较的是地址,那么子类继承object类之后需要重写equals方法来比较两个对象的具体数据。
//重写父类中的equals方法,比较两个对象的属性值或者内容
public boolean equals(Object obj)
{
if(this==obj)
return true;
if(!(obj instanceof Student))
return false;
Student s =(Student)obj;
if(this.sno==s.sno&&this.age==s.age)
{
return true;
}
return false;
}
6.toString()方法在object类中默认比较的也是栈内存的地址,为了让tostring方法比较具体数据,就需要对tostring进行重写(当打印一个对象的时候,会默认调用toString(),默认获得对象的地址:system.out.print("s="+s)相当于system.out.print("s="+s.toString()))
//重写toString ,返回对象的内容
public String toString()
{
return "学号:"+sno+" 年龄:"+age;
}
7.finalize方法在object类中是这样定义的:
protected void finalize throws Throwable(){},
该方法不是抽象方法,但是方法体中没东西。
发表评论
-
二分法、冒泡排序
2017-03-03 10:31 370import java.util.Scanner;/** ... -
for、while循环,打印三角形、菱形
2017-03-03 09:54 554import java.util.Scanner;publi ... -
单线程与多线程
2016-01-16 12:10 629单线程:按照程序 ... -
字节流,字符流,对象流,序列化,持久化
2016-01-15 11:25 699第一:读写字符串 input(读文件里的内容) 的步骤: ... -
深入反射、IO文件、字节流
2016-01-15 11:11 473第一:反射相关的概念 1.反射中调用构造函数默认都是调用 ... -
百度字符串
2016-01-07 17:41 5581、length() 字符串的长度 例:char char ... -
map集合转化成list集合
2015-12-28 15:52 1692package emp; public class Emp ... -
反射
2015-12-28 15:47 437第一:反射的概念 1.(1).java程序源文件(属性和 ... -
泛型
2015-12-28 15:24 410第一:泛型:问题:1.在运算时候必须要向下转型。向下转型存 ... -
map集合和他的实现类hasHmap(不安全)和hashTable(安全)
2015-12-28 15:15 621第一:初步认识map 1.键值对(key与value是一一 ... -
set接口和它的实现类treeset和hashset
2015-12-01 22:50 552第一:set接口:set接口里面的元素不能重复,因此nul ... -
Collection集合根接口、两个子接口list和set
2015-11-30 22:29 637第一:由数组的 ... -
String与StringBuffer、Date日期与SimpleDateFormat 简单的日期格式化
2015-11-29 22:31 669第一:String类:字符串常量1.String是一个类, ... -
异常与异常类
2015-11-25 22:58 402第一.异常的概念:异常就是程序在运行中的错误,程序中的异常用异 ... -
快捷键
2015-11-24 23:06 2981.导包:ctrl+shift+O 2.找类:ctrl+shi ... -
接口,抽象类与接口的关系。多肽、向上转型与动态绑定的引出
2015-11-23 22:04 470第一:在引入接口之前 ... -
关键字:extends继承、abstract 抽象,继承与抽象类之间的关系、final最终的
2015-11-22 17:02 869----继承 1.extends的是继承或者扩展的意思。父类写 ... -
由static引出单例模式
2015-11-22 16:20 314单例模式的特点:保证在整个应用程序中只存在一个对象 单例模式的 ... -
this和static关键字,javadoc文档的产生
2015-11-22 15:51 343----this和static关键字 public class ... -
java内存分析
2015-11-22 15:16 2691.局部变量中的引用类型是把地址存到栈内存中,由栈内存中的地址 ...
相关推荐
而向下转型则需要显式Cast,因为它涉及到将父类对象转换为子类对象,这个过程可能会失败,如果父类对象实际上不是那个子类的实例。 在"SV(SystemVerilog)验证"中,Cast操作也扮演着重要角色。SystemVerilog是一种...
向下转型则是将父类对象转换为子类对象,需要显式进行。`instanceof`关键字用于检查对象是否是某一类的实例。 Java中的`Object`类是所有类的基类,提供了如`equals()`、`hashCode()`和`toString()`等通用方法。抽象...
向上转型是将子类对象赋值给父类引用,而向下转型则是将父类引用赋值给子类对象,这种操作需要使用类型转换操作符。此外,多态还允许使用instanceof关键字来判断一个对象是否为特定类的实例。Java通过简单工厂模式来...
2. **向下转型(Downcasting)**:需要显式转换,例如`(Circle) a`。将父类引用转换为子类类型时,需要确保父类对象实际上是子类实例,否则会抛出`ClassCastException`。使用`instanceof`关键字可以检查一个对象是否...
2. **向下转型**:需要使用强制转换,从父类转换为子类。 3. **`instanceof`操作符**:用于检查对象是否属于特定类或接口。 4. **`Object`类和`equals()`方法**:`equals()`用于比较两个对象是否相等,是`Object`类...
- **向下转型**(自动类型转换):从父类引用转换为子类对象,如从 Shape 转换为 Circle。 - **向上造型**(强制类型转换):从子类对象转换为父类引用,但需要注意转换前需确认对象的实际类型,否则可能会导致 ...
- **向下转型**:将父类引用强制转换为子类类型,以便调用子类特有成员。 - **方法重写**:子类覆盖父类的方法。 - **多态**:通过定义父类类型的引用,可以指向不同的子类实例。 - **抽象类**:包含抽象方法的类,...
- **向下转型**:父类引用可以显式地转换为子类类型。 - **instanceof**:判断对象是否为某个类的实例。 **5.8 子类对父类属性的继承与隐藏** - 子类可以继承父类的属性,也可以声明与父类相同的属性名,此时子类...