zoukankan      html  css  js  c++  java
  • JAVA面向对象(重载,重写 常用的 toString/equals)

    重载(overload):

    *方法名相同,参数类型不同或参数个数不同。

    *有没有返回值,返回值类型和返回值相不相同不影响重载。

    例子:

    public class Son {
        public void show(int a){
            System.out.println(a);
        }
        public void show(String s){
            System.out.println(s);
        }
        public void show(String s,int a){
            System.out.println(a+s);
        }
        
        public static void main(String[] args) {
            Son son = new Son();
            son.show(10);
            son.show("拉姆");
            son.show("拉姆", 20);
        }
    }

    显示结果:

    重写(overwrite / override):

    将父类的方法重新定义
    --在子类中可以根据需要从父类中继承来的方法进行重写

    --重写方法必须和被重写的方法具有相同的方法名, 参数列表和返回类型

    --重写方法不能使用比被重写方法更严格的访问权限


    toString方法的重写

    System.out.println(s);

    System.out.println(s.toString);

    不写.toString 默认也是toString输出

    Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

    getClass().getName() + '@' + Integer.toHexString(hashCode())
     

    重写toString之前

    重写toString之后

     

     Book.java

    public class Book {
        public String name;
        public String zuozhe;
        
        public Book(String name,String zuozhe){
            this.name = name ;
            this.zuozhe = zuozhe;
            
        }
    
        public String toString() {
            return "Book [name=" + name + ", zuozhe=" + zuozhe + "]";
        }
    }

     Main.java

    public class Main {
        public static void main(String[] args) {
            Map a =new HashMap();
            
            Book d = new Book("西游记","吴承恩");
            
            System.out.println(d.toString());
            }
    }


    equals方法的重写

    没重写之前比较的是地址

    重写之后可以自己定义比较的内容

     

    Book.java

    public class Book {
        public String name;
        public String zuozhe;
        
        public Book(String name,String zuozhe){
            this.name = name ;
            this.zuozhe = zuozhe;
            
        }
    
        public String toString() {
            return "Book [name=" + name + ", zuozhe=" + zuozhe + "]";
        }
    
    
        public boolean equals(Object aa){
            if(aa instanceof Book){
                Book b = (Book)aa;
                if(this.name ==b.name && this.zuozhe == b.zuozhe){
                    return true;
                }
            }
            return false;
        }
    }

    Main.java

    public class Main {
        public static void main(String[] args) {
            Map a =new HashMap();
        
            Book b = new Book("西游记","吴承恩");
            Book d = new Book("西游记","吴承恩");
    
                    boolean bb = b.equals(d);
            
            System.out.println(bb);    
        }
    }
  • 相关阅读:
    树套树+【UVALive】6709 Mosaic 二维线段树
    汇编实验1. 计算1+2+3+…+10,将结果显示在屏幕上。4
    Tinkoff Internship Warmup Round 2018 and Codeforces Round #475 (Div. 2) D. Destruction of a Tree
    HDU 4417 Super Mario主席树
    spoj+B
    2018-2019赛季多校联合新生训练赛第五场(2018/12/14)补题题解
    迷宫问题 POJ
    浅谈二分搜索与二分查找
    Moving Tables POJ
    Humidex POJ
  • 原文地址:https://www.cnblogs.com/klose11/p/6894785.html
Copyright © 2011-2022 走看看