zoukankan      html  css  js  c++  java
  • 面向对象的简单理解五

    • Object类:重要的是所有类的父类,里面有两个方法 toString及equals,
    • 所有的类否会覆写这两个方法
    Code
    // Object类是所有类的父类,如果一个类没有明确声明继承自那个类
    // 则肯定会继承Object类
    class Person// extends Object
    {
        
    public String toString()
        {
            
    return "Hello MLDN" ;
        }
    };
    public class OODemo01
    {
        
    public static void main(String args[])
        {
            Person p 
    = new Person() ;
            
    // 默认情况下打印对象,实际上就相当于调用对象中的toString方法
            System.out.println(p) ;//这个等价与
    System.out.println(p.toString)打印结果都是P的地址
    //通过此我们可以覆写toString方法来完成,对各个类的打印不同
        }
    };
    • 看下equals方法的覆写:
    Code
    class Person// extends Object
    {
        
    private String name ;
        
    private int age ;
        
    public Person(String name,int age)
        {
            
    this.name = name ;
            
    this.age = age ;
        }
        
    public boolean equals(Object obj)
        {
            
    if(!(obj instanceof Person))
            {
                
    return false ;
            }
            Person per1 
    = this ;
            Person per2 
    = (Person)obj ;
            
    boolean flag = false ;
            
    if(per1==per2)
            {
                
    // 判断是否是同一个引用
                flag = true ;
            }
            
    else
            {
                
    if(per1.name.equals(per2.name)&&per1.age==per2.age)
                {
                    flag 
    = true ;
                }
            }
            
    return flag ;
        }
        
    public String toString()
        {
            
    return "姓名:"+this.name+",年龄:"+this.age ;
        }
    };
    public class OODemo04
    {
        
    public static void main(String args[])
        {
            Person p1 
    = new Person("AAAAA",30) ;
            
    // Person p2 = new Person("AAAAA",30) ;
            Person p2 = p1 ;//这样二者都是指的一个对象可以通过==来判断
            System.out.println(p1.equals(
    "abc")) ;//防止不是传的person类可以进行instanceOf判断
        }
    };
    • 内部类,在图形化开发中用的比较多
    Code
    class Outer
    {
        
    private String info = "AAA --> BBBB" ;
        
    // 内部类
        class Inner
        {
            
    public void print()
            {
                System.out.println(
    "INFO = "+info) ;
            }
        };
    };
    public class OODemo07
    {
        
    public static void main(String args[])
        {
            Outer o 
    = new Outer() ;
            Outer.Inner in 
    = o.new Inner() ;
            in.print() ;
        }
    };
    Code
    class Outer
    {
        
    private String info = "AAA --> BBBB" ;
        
    public void fun(final int len)//在方法中要是让内部类可以使用方法中的变量,则前面必须加上final,这个只是标记
        {
            
    class Inner
            {
                
    public void print()
                {
                    System.out.println(
    "len = "+len) ;
                    System.out.println(
    "INFO = "+info) ;
                }
            };
            
    new Inner().print() ;
        }
    };
    public class OODemo08
    {
        
    public static void main(String args[])
        {
            
    new Outer().fun(10) ;
        }
    };
    • 匿名内部类:这个内部类只是用一次以后再也不会使用,匿名内部类实在抽象类和接口的基础上发展出来的
    Code
    interface A
    {
        
    public void fun() ;
    }
    class C
    {
        
    public void fun2()
        {
            
    this.print(new A()
                {
                    
    public void fun()
                    {
                        System.out.println(
    "AAA --> BBBB") ;
                    }
                }
            ) ;
        }
        
    public void print(A a)
        {
            a.fun() ;
        }
    };
    public class OODemo10
    {
        
    public static void main(String args[])
        {
            
    new C().fun2() ;
        }
    };
    • 异常:ArithmeticException,ArrayIndesOutBandsException,ArrayStoreException,IOException,FileNotFoundException,NullPointerException
    • finally 不管程序是否出现异常,都要执行,一般用于释放资源
  • 相关阅读:
    Flink1.9重大改进和新功能
    【2020】DBus,一个更能满足企业需求的大数据采集平台
    大数据运维:大数据平台+海量数据
    大数据运维尖刀班 | 集群_监控_CDH_Docker_K8S_两项目_腾讯云服务器
    离线数仓和实时数仓架构与设计
    【全集】IDEA入门到实战
    Mysql快速入门
    RabbitMQ安装
    消息队列MQ简介
    C#特性
  • 原文地址:https://www.cnblogs.com/zhxiaomiao/p/1411092.html
Copyright © 2011-2022 走看看