发表于: 2019-12-25 19:05:35

1 1183


今天完成的事情:

1.看基础,记了些重要的东西。

2.改代码,测试通过。


明天计划的事情: 
继续看基础,代码还没改完,继续改。


遇到的问题: 

改代码的时候,在实体类中报错非法字符,网上找了几个解决办法,有一个是好用的

1)如图,在idea右下角点击UTF-8

2)在选成GBK,点击convert

3)再转回UTF-8就可以了


收获:

1.父类Person,子类Man
Person p1 = new Man ( ) ;
不能调用子类特有的方法、属性;编译时,p1是Person类型
有了对象的多态性以后,内存中实际上加载了子类所特有的属性和方法,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法,子类特有的属性和方法不能调用。
如何才能调用子类特有的属性和方法?(强转)向下转型
Man m1=(Man)p1;
2.instanceof关键字的使用
a instanceof A:判断对象a是否是类A的实例。如果是,返回true;不是,返回false
为了避免在向下转型时出现ClassCastException的异常,我们在向下转型之前,先进行instanceof的判断。返回true,就进行向下转型;返回false,就不进行向下转型。
如果a instanceof A返回true,则a instanceof B也返回true。其中,B是A的父类。
    若子类重写了父类的方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法,系统将不可能把父类里的方法转移到子类中。
    对于实例变量则不存在这样的现象,即使子类里定义了与父类完全相同的实例变量,这个实例变量依然不可能覆盖父类中的实例变量。
Object类的使用
Object类是所有Java类的根父类
==和equals的区别
==:运算符
1)可以使用在基本数据类型变量和引用数据类型变量中
2)如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
     如果比较的是引用数据类型变量:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体。
equals( ):方法
1)只能适用于引用数据类型
2)Object类中equals( )的定义
    public boolean equals(Object obj){
            return(this==obj);
    }
    说明:Object类中定义的equals( ) 和==的作用是相同的,即比较两个对象的地址值是否相同
3)像String、Date、File、包装类等都重写了Object类中的equals( )方法,重写后比较的不是两个引用的地址是否相同,而是比较两个对象“实体内容”是否相同




返回列表 返回列表
评论

    分享到