抽象 修饰符,abstract:只能修饰类和方法: 特点: 1,修饰的类不能创建对象(实例)。 2,修饰的对象只有功能,没有内容。 3,抽象方法和抽象类都必须被abstract关键字修饰,也就是抽象方法一定在抽象类中, 但抽象类不一定要有抽象方法. 4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。 如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。因为抽象方法和抽象类都必须被abstract关键字修饰(如果只复写了一个,那么子类必然还继承了其它的抽象方法,根据抽象方法必须在抽象类中,则这个类还是个抽象类)。 应用: 1,建立不可创建对象的类。 2,如果子类中需要的方法内容不一样,但又同样都要这么方法,那么就可以创建一个抽象类。 例如:创建一个学校成员,有学生,有老师,都有姓名,年龄,都要上课,但老师上课是教学,学生上课是学习。所以可以这样写: - class XueXiao
- {
- private String name;
- private int age;
- XueXiao(String name,int age)
- {
- this.name = name;
- this.age = age;
- }
- public abstract void work();//子类需要这个功能,但内容不一样,所以用抽象。
- }
- class Student extends Employee
- {
- Student(String name,int age)
- {
- super(name,age);//直接调用父类构造函数。
- }
- public void work()
- {
- System.out.println("shangke");
- }
- }
- class LaoShi extends Employee
- {
- LaoShi(String name,int age)
- {
- super(name,age);//直接调用父类构造函数。
- }
- public void work()
- {
- System.out.println("laoshi");
- }
- }
复制代码
接口:接口:初期理解,可以认为是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。 class用于定义类 关健字:interface 用于定义接口。 接口定义时,格式特点: 1,接口中常见定义:常量,抽象方法。 2,接口中的成员都有固定修饰符,(不写也会自动生成)。 常量:public static final 方法:public abstract 记住:接口中的成员都是public的。 接口:是不可以创建对象的,因为有抽象方法。 需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。 否则子类是一个抽象类。原因和抽象类一样,有抽象则为抽象类。 接口可以被类多实现,也是对多继承不支持的转换形式。java支持多实现。 1,类可以实现多个接口,用关健字:implements 如: class Test implements JieKou,JieKou2 2,类继承后,仍可以实现多个接口,如: class Test extends Demo implements JieKou,JieKou2 3,接口在可以实现多继承,如: interface Test extends A,B 例: abstract class Student { abstract void study();学生都要学习,所以可以作为父类来给子类继承。 } interface Smoking { void smoke();//抽烟不是所有学生都会,所以,不可以继承,不然所有学生都抽烟了,所以定义为接口,让需要的类实现就行。 } class ZhangSan extends Student implements Smoking //继承后再实现,这样就实现了功能的扩展。 { void study(){} public void smoke(){}//记得要复写,因为父类是抽象的。 } class Lisi extends Student { void study() { System.out.prtintln("study") } }
|