zoukankan      html  css  js  c++  java
  • 暑假日报-19

    练习了list还有多态

     有了对象的多态性以后,内存中实际加载了子类持有的属性和方法,
    但由于变量声明为父类类型,导致编译时只能调用父类的属性和方法。子类持有的属性和方法不能调用。
    要想调用,需要使用向下转型:使用强制类型转换符
    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);
  • 相关阅读:
    Eclipse自动换行插件
    JAVA中super与this的区别
    外网访问PG数据库,如何赋予IP访问权限
    PostgreSQL环境变量与psql命令的替代作用
    \l 的使用
    一次生成任意多行数据的语句
    equals与==的区别
    PostgreSQL 名词理解EXPLAIN VERBOSE
    PG坑爹的数组定义
    【收藏】常用的ftp命令
  • 原文地址:https://www.cnblogs.com/L-L-ALICE/p/13378849.html
Copyright © 2011-2022 走看看