A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 七丶哥 中级黑马   /  2014-9-2 23:22  /  1662 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象
修饰符,abstract:只能修饰类和方法:
特点:
1,修饰的类不能创建对象(实例)。
2,修饰的对象只有功能,没有内容。
3,抽象方法和抽象类都必须被abstract关键字修饰,也就是抽象方法一定在抽象类中,
   但抽象类不一定要有抽象方法.
4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。
        如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。因为抽象方法和抽象类都必须被abstract关键字修饰(如果只复写了一个,那么子类必然还继承了其它的抽象方法,根据抽象方法必须在抽象类中,则这个类还是个抽象类)。
应用:
1,建立不可创建对象的类。
2,如果子类中需要的方法内容不一样,但又同样都要这么方法,那么就可以创建一个抽象类。
例如:创建一个学校成员,有学生,有老师,都有姓名,年龄,都要上课,但老师上课是教学,学生上课是学习。所以可以这样写:
  1. class XueXiao
  2. {
  3.         private String name;
  4.         private int age;
  5.         XueXiao(String name,int age)
  6.         {
  7.                 this.name = name;
  8.                 this.age = age;
  9.         }       
  10.         public abstract void work();//子类需要这个功能,但内容不一样,所以用抽象。
  11. }

  12. class Student extends Employee
  13. {
  14. Student(String name,int age)
  15. {
  16.         super(name,age);//直接调用父类构造函数。
  17. }
  18.         public void work()
  19.         {
  20.                 System.out.println("shangke");
  21.         }
  22. }

  23. class LaoShi extends Employee
  24. {
  25.         LaoShi(String name,int age)
  26.         {
  27.                 super(name,age);//直接调用父类构造函数。
  28.         }
  29.         public void work()
  30.         {
  31.                 System.out.println("laoshi");
  32.         }
  33. }
复制代码

接口:
接口:初期理解,可以认为是一个特殊的抽象类
        当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
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")
}
}

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 很给力!

查看全部评分

4 个回复

倒序浏览
学习学习。
回复 使用道具 举报
学习了,不错
回复 使用道具 举报
学习了,讲得很好。
回复 使用道具 举报
很好,楼主继续努力
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马