0
点赞
收藏
分享

微信扫一扫

类和继承

今日份学习类的继承,Object类和Object类中的三个重要方法(getClass()方法,toString()方法,equals()方法)。

  • 类的继承

      继承使整个程序架构具有一定的弹性,它不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性。
       在JAVA语言中,一个类继承另一个类需要使用关键字extends
【例】class Child extends Parent{}
       子类在继承父类之后可以调用父类创建好的属性和方法。JAVA虽然不允许同时继承两个父类,但可以有多继承关系。(祖父>父>儿子>孙子)
【例】在电话的基础上衍生出手机类
class Telephone{
String button="button:0~9";
void call() {
System.out.println("开始拨打电话");
}
}

class Mobile extends Telephone{
String screen="screen:液晶屏";
}
public class Demo {

public static void main(String[] args) {
Mobile motto=new Mobile();
System.out.println(motto.button);
System.out.println(motto.screen);
motto.call();
}

}
结果为:

  • Object类

   在Java中所有的类都直接或间接的继承了java.lang.Object类。

   Object类是所有类的父类,是Java类层中的最高层类。Java中的每个类都源自于java.lang.Object类,自定义的类也都继承于Object类。由于所有类都是Object类的子类,所以在定义类时可省略extends Object。

   在Object类中,主要包括clone()、finalize()、toString()等方法。由于所有的类都是Object类的子类,所以所有类都可以重写Object类的方法。

(Object类中的getClass()、notify()、notifyAll()、wait()等方法不能被重写,这些方法被定义为final类。)

其中,Object类中的几个重要方法为:

  1. getClass()返回对象执行时的Class实例。
    getClass().getname();
    可以将getClass()方法与toString()方法联合使用。
  2. toString()toString()方法的功能是将一个对象返回为字符串的形式,会返回一个Strmg实例。
    当这个类转换为字符串或与字符串连接时,将自动调用重写的toString()方法。
    【例】让学生自我介绍
    public class Student {
    String name;
    int age;

    public Student(String name,int age) {
    this.name=name;
    this.age=age;
    }

    public String toString() {
    return "我叫"+name+",今年"+age+"岁。";

    }

    public static void main(String[] args) {
    Student s1=new Student("李一",16);
    System.out.println(s1);
    Student s2=new Student("李二",9);
    System.out.println(s2);

    }

    }
    结果为:
  3. equals()(java中比较对象的一种方式)

Java中有两种比较对象方式:

“==”运算符和equals()方法。

“==”运算法比较的是两个对象引用内存的地址是否一样,equals()方法比较的是两个对象的实际内容。

【例】根据身份证号判断是否为同一人

public class People {

int id;

String name;


public People(int id,String name) {

this.id=id;

this.name=name;

}


public boolean equals(Object obj) {

if(this==obj)

return true;

if(this==null)

return false;

if(getClass()!=obj.getClass())

return false;

People other=(People)obj;

if(id!=other.id)

return false;

return true;


}


public String toString() {

return name;

}


public static void main(String[] args) {

People p1=new People(445,"李一");

People p2=new People(445,"李二");

People p3=new People(447,"李三");

Object o=new Object();


System.out.println(p1+"与"+p2+"是否为同一人?");

System.out.println("equals()方法的结果是:"+p1.equals(p2));

System.out.println("==运算符的结果:"+(p1==p2));


System.out.println();

System.out.println(p1+"与"+p3+"是否为同一人?");

System.out.println(p1.equals(p3));

System.out.println(p1+"与"+o+"是否为同一人?");

System.out.println(p1.equals(o));




}


}

结果为:

类和继承_Java


       由上述例子可看出,如果身份证号相同,equals()方法判断出这两个对象实际上是同一个,而“==”运算符无法作出有效判断;如果两个对象的身份证号不同,或者两个对象的类型都不同,equals()方法就会认为两者不是一个人。



举报

相关推荐

0 条评论