JAVA类的相关信息:
1.类的继承,Java只支持单一继承,也就是只有一个父类,利用extends 关键字继承,例如:
class A{ };
class B extends A{ };
class C extends A,B{ };//这是错误的,不能同时继承多个父类;
但是Java中允许多层继承:
class A{ };
class B extends A{ };
class C extends B{ };
2.如果在子类中重写了父类的方法后,要再次使用父类的方法,那么要用super.方法名();
3.如果子类的构造方法中没有显式地调用父类构造方法,也没有使用this关键字调用重载的
其它构造方法,则系统默认调用父类无参数的构造方法,相当于省略了super();语句
4.在子类的构造方法中可使用语句super(argument_list)调用父类的构造方法,但必须作
为构造方法的第一条句。
5.用关键字abstract修饰的类称为abstract类(抽象类);
它的特点:和普通类相比,abstract类可以有abstract方法。对于abstract方法,只允许声明,
不允许实现,而且不允许使用final修饰abstract方法。对于abstract类,我们不能使用new运算
符创建该类的对象,需产生其子类,由子类创建对象,如果一个类是abstract类的子类,它必须
具体实现父类的abstract方法,这就是为什么不允许使用final修饰abstract方法的原因。
6.接口声明:接口与类属于同一层次,实际上,接口是一种特殊的抽象类。在Java中接口定义同类
的定义很相似,分为接口声明和接口体两部分。接口通过interface关键字声明,接口体中只能包
含全局常量和抽象方法,接口的变量自动是public static final属性,接口中的方法自动是
public abstract属性,并没有方法体,以分号结尾。
格式: [public] interface 接口名 [extends 父接口名表]{ 接口体;}
接口体包含常量定义和方法定义,
例如:
interface IA{
public static final int MAX=100; //全局常量
public void print(); //抽象方法
public abstract int sum(); //抽象方法
}
注:
1) public interface:公开接口,与类相似,一个文件只能有一个public接口,且与文件名相同。
2) 在一个文件中不可同时定义一个public接口和一个public类。
3) 接口和接口之间可以定义继承关系,并且接口之间允许实现多重继承。
例:interface IC extends IA,IB{ };//允许多重实现
7.一个类除了继承另一个类之外,还能实现接口:例如
class IAImpl extends java.util.Arrylist implement IA,IB{}
1) 一个类实现了某个接口,则必须实现接口中的所有方法,如果没有实现接口中的所有方法,
则此类一定是抽象类。因为一个类实现接口,相当于它继承一个抽象类。
2) 接口中方法可不写public,但在子类中实现接口的过程中public不可省。(如果省去public则
在编译的时候提示出错:对象无法从接口中实现方法,相当于降低了重写方法的权限。)
3) 如果父类实现了某个接口,子类不需要使用implements关键字声明就可以使用此接口。
4) 接口也可以用于定义对象
接口使用案例:
interface IDetail{
public String detail();
}
class Teacher implements IDetail {
private String name;
private int age;
private String type;
public Teacher(String name, int age, String type) {
this.name = name;
this.age = age;
this.type = type;
}
// 返回教师详细信息
public String detail() {
return "姓名:" + name + ",年龄:" + age + ",教师类型:" + type;
}
}
class Printer {
public void print(String s) {
System.out.println(s);
}
}
class MedicalInspection implements IDetail{
Printer printer = new Printer();
// 返回体检中心信息
public String detail() {
return "这里是滨州市体检中心,欢迎您的到来!";
}
// 打印detail信息
public void printDetail(IDetail d) {
printer.print(d.detail());
}
}
public class ExDemon03 {
public static void main(String[] args) {
MedicalInspection mi=new MedicalInspection();
IDetail t = new Teacher("李四", 33, "Java");
mi.printDetail();// 打印教师信息
mi.printDetail(mi);// 打印中心信息
}
}
阅读(912) | 评论(0) | 转发(0) |