暑假自学(20)

Posted buxiang-christina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了暑假自学(20)相关的知识,希望对你有一定的参考价值。

instanceof:
有了对象的多态性以后,内存中实际加载了子类持有的属性和方法,
但由于变量声明为父类类型,导致编译时只能调用父类的属性和方法。子类持有的属性和方法不能调用。
要想调用,需要使用向下转型:使用强制类型转换符
Person p1 = new Man();//Person类型
Man m1 = (Man)p1;//类型转换
但是:Woman m2 = (Woman) m1;//失败
a instanceof A:判断对象a是否是类A的实例。如果是,返回true,不是返回false
由于类型转换时可能会出现异常,所以利用instanceof在转换前进行判断,true则进行转换,反之不转换
如果a instanceof A返回true B是A的父类 则a instanceof B也返回true。

== 运算符
1.用于基本数据类型的数值比较
2.用于引用数据变量的地址值比较(是否指向同一个堆空间中的实体)
equals:
Object类中equals的定义
public boolean equals(Object obj){
return (this == obj);
}
像String,File,包装类等,都重写了equals()方法
重写以后,比较的是内容而不是地址。
重写规则:比较内容是否相同
public boolean equals(Object obj){
if(this == obj){
return true;//如果二者地址相同,则肯定相同
}
if(this instanceof obj){
if(this.age == obj.age&&this.name.equals(obj.name))
return true;
}
return false;
}

 

 

 

多态性测试代码

public class text {
public static void main(String[] args) {
Sub s = new Sub();
System.out.println(s.count);
s.display();
Base b = s;//附地址
System.out.println(b == s);//地址相同返回true
System.out.println(b.count);
b.display();//此时b与s指向堆中同一个对象
}
}
class Base{
int count = 10;
public void display() {
System.out.println(this.count);
}
}
class Sub extends Base{
int count = 20;

public void display() {
System.out.println(this.count);
}
}

以上是关于暑假自学(20)的主要内容,如果未能解决你的问题,请参考以下文章

暑假自学

暑假自己自学了下MFC,现在需要软件中读取数据,不如说用软件读取一个ACCESS的数据文件。

暑假自学小分步3

大学想报计算机专业,暑假想要自学,有哪些建议?

暑假自学JAVA Web心得

2019/8/10暑假自学——周进度报告5