面向对象和类
类的特性:1、封装性 2、继承性 3、多态性 封装性包含两层含义:1、将数据和对数据的操作组合起来构成类,类是一个不可分割的独 立单位。2、类中既要提供与外部联系的方法,同时又要尽可能隐藏类的实现细节。
构造方法
当一个类没有声明构造方法时,Java 自动为该类生成一个默认的构造方法, 默认构造方法无 参数。 当一个类声明了有参数的构造方法时,Java 不再自动为该类生成一个无参数的构造方法。 如果需要有多种参数的构造方法,则需要将构造方法重载。
析构方法
析构方法用来主动释放对象,或者释放对象时执行特定操作。一个类只能有一个 finalize() 方法,且 finalize()不允许重载。通常,当对象超出它的作用域时,
系统将会自动调用并执行 对象的析构方法。一个对象也可以调用析构方法释放对象自己。
方法的重载
重载的多个成员方法之间必须通过参数列表想区别,即必须满足以下两个条件: 1、 参数
列表必须不同,即以不同的参数个数、参数类型、参数次序来区别重载方法。 2、 返回值可以相同,也可以不同,即不能以不同的返回值来区别重载的方法。
this
this 可以 1、 指代对象本身。 2、 访问本类的成员变量和成员方法。 3、 调用本类重载的构造方法。(构造方法中,this 引用必须是第一行语句)。
Instanceof 运算符可以判断一个对象是否属于指定类及其子类,返回 boolean 类型。
继承
子类继承父类的成员变量,包括实例成员变量和类成员变量。 子类继承父类除构造方法以外的成员方法,包括实例成员方法和类成员方法。 子类不能继承父类的构造方法, 因为父类构造方法创建的是父类对象, 子类必须声明自己的 构造发那个发,创建子类自己的对象。 子类能够继承父类的析构方法。 子类不能删除父类成员。 子类可以增加自己的成员变量和成员方法。 子类可以重定义父类成员。 Java 只支持单重继承,一个类只能有一个父类。
==和 equals 的本质和区别 和
publicclass Test { publicstaticvoid main(String[] args) { // 对于基本类型的变量。"=="和"equal"的区别 int t1 = 57; int t2 = 67; int t3 = 124; int t4 = 124; // “==”对于基本数据类型,判断两个变量的值是否相等。 Boolean result1 = (t1 == t2); Boolean result2 = ((t1 + t2) == t3); Boolean result3 = (t3 == t4); System.out.println("\n\n-----【t1==t2】" + result1 + "\n-----【(t1+t2)=t3】" + result2 + "\n-----【t3=t4】" + result3); // “equal”不能用于基本数据类型。只能用于类变量。对于基本数据类型要用其包 装类。 Integer i1 = new Integer(t1); Integer i2 = new Integer(t2);
Integer i3 = new Integer(t3); Integer i4 = new Integer(t4); Boolean ri1 = i1.equals
(i2); Boolean ri2 = i3.equals(i1 + i2); Boolean ri3 = i3.equals(i4); System.out.println("\n\n-----【i1.equals(i2)】" + ri1 + "\n-----【i3.equals(i1+i2)】" + ri2 + "\n----【i3.equals(i4)】" + ri3); // 对于对象变量,"=="和"equal"的区别 String st1 = "wasiker "; String st2 = "is super man"; String st3 = "wasiker is super man"; String st4 = "wasiker is super man"; Boolean b1 = (st1 == st2); Boolean b2 = (st1 + st2) == st3; Boolean b3 = (st3 == st4); System.out.println("\n\n-----【st1==st2】" + b1 + "\n-----【(st1+st2)==st3】" + b2 + "\n-----【st3==st4】 " + b3); // 因为对象变量的存储的是对象在内存中的路径,即内存地址。所以用“==”比较时, 即使 // 对象的值相等,但是他们的内存地址不同,所以==的结果为false。故“==”用于 比较两 // 个变量的值是否相等,而不是变量引用的对象是否相等 Boolean r1 = st1.equals(st2); Boolean r2 = (st1 + st2).equals(st3); Boolean r3 = st3.equals(st4); System.out.println("\n\n-----【st1.equals(st2)】