面向对象(下)
==与equals方法
==通常用来比较数值型,不可用来比较类型上没有父子关系的两个对象
eg:int it = 65;
float fl = 65.0f;
//将输出true
System.out.println("65和65.0f是否相等?" + (it == fl));
char ch = 'A';
//将输出true
System.out.println("65和'A'是否相等?" + (it == ch));
String str1 = new String("hello");
String str2 = new String("hello");
//将输出false
System.out.println("str1和str2是否相等?"
+ (str1 == str2));
//将输出true
System.out.println("str1是否equals str2?"
+ (str1.equals(str2)));
//由于java.lang.String与EqualTest类没有继承关系,
//所以下面语句导致编译错误
System.out.println("hello" == new EqualTest());
Final
Final关键字 用于表示它修饰的类 方法和变量不可改变,由于这个特性Java规定 final修饰的成员变量必须有程序员显示的制定初始值。
抽象类(提高程序的灵活性)
抽象类和抽象类 用abstract来定义,抽象方法不能有方法体。抽象类不能被实例化,可以包含普通方法和抽象方法,但是包含抽象方法的类只能被定义成抽象方法。
注意抽象方法与空方法体 public abstract void test();是一个抽象方法,它根本没有方法体,即方法后边没有一对花括号;但是public void test(){}方法是一个空方法。
Abstract修饰类时,表明这个类只能被继承;当使用abstract修饰方法时,表明这个方法必须由子类提供实现(即重写)。而final修饰的类不能被继承,Final修饰的方法不能被重写。因此final和abstract永远不能同时使用。
Final关键字 用于表示它修饰的类 方法和变量不可改变,由于这个特性Java规定 final修饰的成员变量必须有程序员显示的制定初始值。
抽象类(提高程序的灵活性)
抽象类和抽象类 用abstract来定义,抽象方法不能有方法体。抽象类不能被实例化,可以包含普通方法和抽象方法,但是包含抽象方法的类只能被定义成抽象方法。
注意抽象方法与空方法体 public abstract void test();是一个抽象方法,它根本没有方法体,即方法后边没有一对花括号;但是public void test(){}方法是一个空方法。
Abstract修饰类时,表明这个类只能被继承;当使用abstract修饰方法时,表明这个方法必须由子类提供实现(即重写)。而final修饰的类不能被继承,Final修饰的方法不能被重写。因此final和abstract永远不能同时使用。
接口
接口是一种特殊的抽象类,里面不能包含普通方法方法,必须都是抽象方法。
接口支持多继承,即支持多个直接父类。但是接口只能继承接口,不能继承任何类。