a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 96|回复: 0

[基础知识] JAVA面向对象编程课堂笔记12

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
注意比较: 5 K% M3 @8 o; N% F& f  K8 B
private void print(){};此语句表示方法的空实现。
# w5 |, r* h1 ZAbstract void print(); 此语句表示方法的抽象,无实现。
/ `* C" O; M) o, k1 z: b2 ~! w  " n% X- Z% `! b/ D
如果一个类中有一个抽象方法,那么这个类一定为一个抽象类。
: r+ j5 `$ g% A反之,如果一个类为抽象类,那么其中可能有非抽象的方法。
1 O- c; A/ P0 K( h5 r9 m  ' N$ K  K0 K% Y. k/ e% f
如果让一个非抽象类继承一个含抽象方法的抽象类,则编译时会发生错误。因为当一个非抽象类继承一个抽象方法的时候,本着只有一个类中有一个抽象方法,那么这个类必须为抽象类的原则。这个类必须为抽象类,这与此类为非抽象冲突,所以报错。 8 o0 L6 c; ?- p0 g
  - G' @/ P8 M3 O5 [& y
所以子类的方法必须覆盖父类的抽象方法。方法才能够起作用。 8 o% Q8 m3 Q! R9 H
为了实现多态,那么父类必须有定义。而父类并不实现,留给子类去实现。此时可将父类定义成abstract类。如果没有定义抽象的父类,那么编译会出现错误。
, [8 m0 v- Q$ ?2 b( {  
6 |& U% E$ U" R1 n$ AAbstract和static不能放在一起,否则便会出现错误。(这是因为static不可被覆盖,而abstract为了生效必须被覆盖。) 6 N6 _+ @; w' V6 G' J& v: m
  
! }: g: V/ L) J2 {3 W例:(本例已存在\CODING\abstract\TestClass.java文件中) . X* S- f  R% Z2 H2 R7 ^% P
public class TestClass{ - X+ {. m% e" l: y$ p; U- E
  public static void main(String[] args){ * h) m- y4 d, h4 n( b4 _
SuperClass sc=new SubClass();
( ~; w% d! w9 N& G6 P+ W" @* K4 _# ]- e# kSc.print();
$ l8 h: \% s. C+ c1 `# y2 a} 1 I! z- p6 R- _+ E6 [
Abstract class SuperClass{
! P7 V  Z6 a6 G, P+ m! e3 SAbstract void print();} 4 R2 a5 D, [. m7 T) [) S/ ?# u
}
9 I. S* [; F/ aclass SubClass extends SuperClass(){
5 K$ X4 g- ^' b( ~  void print(){ 9 c; e. ~- ~! z2 d! c
System.out.println(“print”);}
& u, z) d& `( v) h; p}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-7 16:31 , Processed in 0.212092 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表