1、Object类
它是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类就默认继承Object类。因此,Object类是Java类层中的最高层类,是所有类的超类。
换句话说,Java中任何一个类都是它的子类。由于所有的类都是由Object类衍生出来的,所以Oject类中的方法适用于所有类。
public class Person {// 当没有指定父类时,会默认Object类为其父类
…}
上面的程序等价于:
public class Person extends Object{
…}
2、在Java中声明类、属性和方法时,可使用关键字final来修饰。
· final标记的类不能被继承。
· final标记的方法不能被子类复写。
· final标记的变量(成员变量或局部变量)即为常量,只能赋值一次。
3、接口(interface)
接口(interface)是Java所提供的另一种重要技术,它的结构和抽象类非常相似,也具有数据成员与抽象方法,但它与抽象类又有以下两点不同:
·接口里的数据成员必须初始化,且数据成员均为常量。
·接口里的方法必须全部声明为abstract,也就是说,接口不能像抽象类一样保有一般的方法,而必须全部是“抽象方法”。
定义格式:
interface 接口名称 {// 定义抽象类
final 数据类型成员名称 = 常量; // 数据成员必须赋初值
abstract 返回值的数据类型方法名称(参数…);
// 抽象方法,注意在抽象方法里,没有定义方法主体。
}
抽象方法声明的关键字abstract是可以省略的。相同的情况也发生在数据成员身上,因数据成员必须赋初值,且此值不能再被更改,所以声明数据成员的关键字final也可省略。事实上只要记得:(1)、接口里的“抽象方法”只要做声明即可,而不用定义其处理的方式;(2)、数据成员必须赋初值
接口是用于实现多继承的一种机制,也是java设计中最重要的一个环节,每一个由接口实现的类必须在类内部复写接口中的抽象方法,且可自由地使用接口中的常量。
利用接口打造新的类的过程,称之为接口的实现(implementation)。
实现格式:
class 类名称 implements 接口A,接口B // 接口的实现
{
…
}
例:
//声明接口demo interface demo { //声明三个常量 String name="dongdong"; int age=18; String city="北京"; //创建抽象方法 public abstract String show(); } //继承demo接口 public class demo1 implements demo{ //复写父接口demo的方法 public String show(){ return "他叫"+name+",今年"+age+"岁,来自"+city; } } public class demo3 { public static void main(String[] args) { demo1 d=new demo1(); System.out.println(d.show()); } }
接口的扩展格式:
interface 子接口名称 extends 父接口1,父接口2,…
{
… …
}
例:
//声明接口demo interface demo { String name="dongdong"; //创建抽象方法 public abstract String show(); } //声明接口demo interface demo1 { int age=18; //创建抽象方法 public abstract String show1(); } //接口demo2同时继承demo,demo1 interface demo2 extends demo,demo1{ String city="北京"; //创建抽象方法 public abstract String show2(); } //继承demo2接口 public class demo3 implements demo2{ //复写父接口demo2的方法,demo2继承demo和demo1,所以要复写demo,demo1,demo2的方法 public String show(){ return "他叫"+name; } public String show1(){ return ",今年"+age; } public String show2(){ return "岁,来自"+city; } } public class demo4 { public static void main(String[] args) { demo3 d=new demo3(); System.out.println(d.show()+d.show1()+d.show2()); } }