java基础 第六讲.pptVIP

  • 2
  • 0
  • 约3.89千字
  • 约 28页
  • 2017-06-07 发布于湖北
  • 举报
第五章:修饰符,接口 修饰符 在java语言中提供了一些修饰符,这些修饰符可以修饰类,变量和方法。灵活正确地运用这些修饰符,会使软件程序最贴切地模拟真实世界中的系统,并且有助于提高软件系统的可重用性,可维护性,可扩展性及系统的运行性能。 abstract修饰符 用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能实例化,即不允许创建抽象类本身的实例。没有用abstract修饰的类称为具体类,具体类可以被实例化。 用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不能提供具体的实现。没有用abstract修饰的方法称为具体方法,具体方法具有方法体。 abstract修饰符 抽象类的实例: public abstract class base{ abstract void method(); void method2(){ System.out.println(“method2”); } } abstract 修饰符需要遵守的规则 抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类,如果子类没有实现父类所有的抽象方法,那么子类也必须被定义为抽象类,否则编译出错。 abstract class Person{ abstract void method1(); abstract void method2(); } abstract 修饰符需要遵守的规则 class student extends Person{ void method1(){ System.out.prinltln(“method1”); } } abstract 修饰符需要遵守的规则 没有抽象构造方法,也没有抽象静态方法。 abstract class Person{ abstract Person(){}//编译出错 static abstract void method1();//编译出错 static void method2()//编译通过 } abstract 修饰符需要遵守的规则 抽象类中可以有非抽象的构造,创建子类的实例时可能会调用这些构造方法。抽象类不能被实例化。然而可以创建一个引用变量,其类型是一个抽象类,并让它引用非抽象的子类的一个实例。 abstract class Person{} class Student extends Person{ Person p1=new Person();//编译出错 Person p2=new Student();//编译通过 } abstract 修饰符需要遵守的规则 抽象类及抽象方法不能被final修饰符修饰。 Abstract修饰符与final不能连用。因为抽象 类只有创建其子类,它的抽象方法才能被 实现,并且只有只有它的具体子类才能被 实例化,而用final修饰的类不能拥有子类,用 final修饰的方法不允许被子类方法覆盖,因此 把abstract修饰符与final修饰符连用,会导致自相矛盾。 为什么抽象类不能被实例化? 从语义上,抽象类表示从一些具体的类抽象出来的类型。从具体的类到抽象类,这是一种更高层次的抽象 在语法上,抽象类中可以包含抽象方法。 final修饰符 final具有“不可变的”含义,它可以修饰非抽象类,非抽象成员方法和变量。 ①用final修饰类不能被继承,没有子类。 ②用final修饰方法不能被子类的方法覆盖 ③用final修饰的变量表示常量,只能被赋一 次值。 final类 ①不是专门为继承而设计的类,类本身的方法之间有复杂的调用关系。假如随意创建这些类的子类,子类有可能会错误地修改父类的实现细节。 ②出于安全的原因,类的实现细节不允许会有任何改动 ③在创建对象模型时,确信这个类不会被扩展 final方法 在某些情况,出于安全的原因,父类不允许子类覆盖某个方法,此时可以把这个方法声明为final类型。 例如:所有Object的子类都可以覆盖equal()方法,但不能覆盖getClass()。 final变量 用final修饰的变量表示取值不会改变的变量。 例如: public static final int MAX_VALUE=2121212; public static final int

文档评论(0)

1亿VIP精品文档

相关文档