zoukankan      html  css  js  c++  java
  • 继承、方法的重写、Object类及toString方法

    extends意思为“扩展”,子类是父类的扩展,实现了代码的重用。

    1.父类也称超类、基类、派生类等

    2.java中只有单继承,java中类没有多继承,接口有多继承。

    3、子类继承父类,可以得到父类全部的属性和方法(除了父类的构造方法),但不可以直接访问父类的私有属性和方法。

    4,如果一个类,没有调用extends,则它的父类是java.lang.Object.

    instanceof关键词用来判断是不是属于该类型

    public class TestExtends {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Student stu=new Student();
            stu.height=160;
            stu.name="laura";
            stu.rest();
            
            Student stu2=new Student("hui",20,"software");
            System.out.println("名字是"+stu2.name+"年龄是"+stu2. height +"专业是"+stu2.major);
            System.out.println(stu2 instanceof Student);
            System.out.println(stu2 instanceof Person);
            System.out.println(stu2 instanceof Object);
            System.out.println(new Person() instanceof Student);//反过来错误,Person不属于Student
        }
    }
    class Person /*extends Object*/ {   //Ctrl+t键可以查看继承结构
        String name;
        int height;
        void rest(){
            System.out.println("休息一会!");
        }
    }
    class Student extends Person{
        String major;
        void study(){
            System.out.println("学习两小时");
        }
        public Student(String name,int height,String major){
            this.name=name;
            this.height =height;
            this.major=major;
        }
        public Student(){   //要自己加入构造器 
        }
    }

    方法的重写override:子类通过重写父类的方法,可以用自身的行为替换父类的行为。

    方法的重写需要符合下面三个条件:

    1.方法名,形参列表相同

    2.返回值类型和声明异常类型,子类小于等于父类

    3.访问权限,子类大于等于父类

    Object类:是所有java类的根基类,所有java对象都拥有Object类的属性和方法。

     按住ctrl可查看源码:

    位于java.lang包,核心包里;Object是所有类的根,每一个类都可以把它当做父类,所有对象包括数组实现了这个类。

    可从右侧outline大纲中查看方法:

    常用方法:toString    

    查看toString方法及源码:

    输出结果会    返回包名+类名+@+16进制字符串

    toString方法的重写:

    "=="和equals:

    "=="代表比较双方是否相同,如果是基本类型则表示值相等,如果是引用则表示地址相等即是同一个对象。

    equals方法是Object类中提供的一种方法,定义为public boolean equals方法,提供定义“对象内容相等”逻辑。

     

    public class TestEquals {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Object obj;
            String str;
            User u1=new User(1706,"laura","1234");
            User u2=new User(1706,"laura","12356");
            System.out.println(u1==u2);
            System.out.println(u1.equals(u2));//重写之后只根据id进行判断
            
            String str1=new String("laur");
            String str2=new String("laur");
            System.out.println(str1==str2);//false   不是一个对象
            System.out.println(str1.equals(str2));//true  同一个内容
        }    
    }
    class User{
        int id;
        String name;
        String pwd;
        /*右键Source+Generate Constator using fields,可以生成构造器*/
        public User(int id, String name, String pwd) {
            super();
            this.id = id;
            this.name = name;
            this.pwd = pwd;
        }
        /*重写equals方法,可以自己生成source+Generate equals*/
        @Override
        public boolean equals(Object obj) {
            if (this == obj)   //如果传进来的obj和对象的相等,则true
                return true;
            if (obj == null)   //若传进来为空,不用比,为false
                return false;
            if (getClass() != obj.getClass())  //若传进来类不一样,不用比
                return false;
            
            User other = (User) obj;  //强制转型为User
            if (id != other.id)
                return false;
            return true;
        }
    }

  • 相关阅读:
    Golang 学习权威网站
    iOS多线程GCD的使用
    iOS 开发 nonatomic 和 atomic
    iOS证书配置与管理
    iOS pthread
    NSTimer 不工作 不调用方法
    iOS开发者学习Flutter
    Xcode如何打开Archives打包界面?
    iOS 12.1 跳转页面时 tabBar闪动
    支付宝
  • 原文地址:https://www.cnblogs.com/laurarararararara/p/11341773.html
Copyright © 2011-2022 走看看