java继承和接口_Java 继承和接口

1 2 子类与父类3 使用extends关键字来声明一个类是另一个类的子类4 如:class子类名字 extends 父类名字5 若是 没有使用extends关键字,那么默认是Object类的子类 包java.lang中6 父类的数据成员在类中全部存储,包括子类中不能访问的数据成员 (可能有方法会用到)7

8 子类的继承性:继承的成员变量和成员方法 的访问权限保持 不变9 如果子类和父类在同一个包中10 子类继承父类 不是private的 :成员变量 和 成员方法11 如果子类和父类在不同的包中12 子类继承父类 protected,public的 成员变量和成员方法13 子类不能继承父类的友好变量 和友好 方法14

15 protected说明:16 protected:声明的变量和方法,只能在本包中 和子类中进行访问,其他的访问出错17 类A的protected的变量 和方法 可以被 类A的直接 子类 和间接子类 继承;18 若在子类B中有声明了protected 的变量和方法:19 若:其他的类D要想访问子类B的这个protected的变量和方法,只需要这个类D和 类B在同一个 包中20 若:其他的类D想要访问子类B的父类的proteced的变量和方法,只需要这个类D和 类B的父类 在同一个包中,即可21 就是追溯到父类的源头 A类22

23 子类对象构造24 用子类的构造方法创建对象的时候:子类的构造方法默认会先调用父类的无参构造方法25

26 成员变量的隐藏:27 子类中声明的变量和父类中声明的变量同名字:子类就隐藏了 从父类中 继承的这个成员变量28 使用的是 在子类中新声明的这个同名的变量29 方法的重写:30 子类可以通过重写 隐藏 从父类 继承的 实例方法:31 若是子类想使用 被隐藏的变量或者方法可以是使用super关键字 :super.变量|方法32

33

34 子类构造方法:35 super();若是没有写super();会默认有super();默认调用父类的无参构造方法36 也可以用super(name...);等等父类的多个构造方法37 比如父类中 name属性38 1:name=null;39 2:调用子类的构造函数:40 3:子类的构造方法 会自动调用 写super("Tom",..)方法41 4:父类的this.name=name 变成 自定义的值Tom42 5:然后返回子类中,继续初始化其他方法43

44 final关键字:45 final关键字可以修饰:类,成员变量,局部变量,方法46 final修饰类:这个类不能被继承,即不能有子类-> final classA47 final修饰方法:这个方法不能被 子类重写48 final修饰成员变量和局部变量:那么这个变量 就是常量,不能更改,且必须在声明时给出默认值49

50

51 对象的上转型对象52 类A 是 类 B 的父类53 当用子类B创建 一个对象b的时候(即:已经分配了内存空间,子类对象存着引用)54 将这个对象的引用b放到父类的对象a中,那么称对象a为对象b的上转型对象55 A a=newB();56 上转型对象的实体 会失去 子类对象创建实体的一些属性:(空间内存中仍然存在,不过不能访问)57 上转型对象a不能操作子类b 新增的成员变量,58 上转型对象a不能调用子类b 新增的成员方法59 上转型对象a可以访问子类b 继承或隐藏的 父类a的成员变量:操作都是父类的成员属性60 上转型对象a可以调用子类b 继承a的方法:操作的是 父类的继承方法61 若是子类重写了父类的方法,那么上转型对象操作的是 子类中的这个重写的方法62 上转型对象a可以强制转换到 子类对象b,此时子类对象 有具备了子类的所有功能63 注意:父类创建的对象 不能转给子类64

65

66 多态:父类的某个方法被其子类重写时,可以各自产生不同功能67 多态分为:静态多态,动态多态68 静态多态:在编译时,就能确定执行哪一段代码(与重载有关)69 动态多态:在运行时,才能确定引用哪一段代码(与重写父类方法和上转型对象有关)70 在未运行之前,可能有多个方法调用,不能确定执行调用哪一个71

72 abstract类和方法73 abstract修饰的类称为 (abstract) 抽象类74 public abstract classA75 抽象类中可以有:抽象方法和 非抽象方法76 抽象类 不能使用new 运算符 创建对象77 用abstract修饰的方法 称为(abstract) 抽象方法:public abstract voidspeak();78 抽象方法,只允许声明而不允许实现,且final 和abstract不能同时修饰同一个方法79 如果一个非抽象类B 是 一个 抽象类A的子类 ,那么 这个 非抽象类 B必须 重写 父类 抽象类A的所有抽象方法,给出方法体80 如果一个 抽象类 B 是 一个抽象类A的子类 ,那么 这个 抽象类 B 可以重写父类 抽象类A 的 抽象方法;也可以继承 ,不用重写81 抽象类:只关心操作:即 方法的名字,类型,和参数,不关心方法体82

83 abstract与多态84 abstract类声明的对象a 作为子类b的上转型对象 ,可以调用子类b 重写的 方法85 A a= new B()|new C()|new D();//上转型对象,可以调用 不同子类的方法,但是实现都是同一个方法名字

86 a.方法speak();87 程序设计时:通过abstract类声明若干个abstract方法,方法体 由它的非abstract类去实现88 首先对abstract类的修改进行关闭;89 否则 一旦在修改abstract类,那么所有的子类都会重新作出修改90 在程序设计好之后,然后 对abstract 的子类开放91

92 接口:93 java不支持多继承性:一个类只能有一个父类94 但是一个类可以 实现多个接口95 接口的声明:interace 声明接口:96 interface 接口的名字->interfaceA{...}97 接口体:包含常量定义 和 方法定义98 常量:接口 中的所有常量 访问权限一定是public final;99 且常量不可变 public final int cnt=0;//public,final可以省略

100 常量可同通过接口名字调用|或者 实现接口的类 的 类名调用--->接口名.Max|A.Max101 方法:接口 中 只有 抽象方法,没有普通方法102 且访问权限是public abstract;可以省略public ,abstract

103 一个类可以通过使用关键字implements声明 自己 实现 一个 或者多个接口(用,隔开接口名)104 public classA implements 接口1,接口2,...{}105 如果一个类 实现了某个接口,那么这个类必须重写 这个 接口的 所有方法:一定要加上public106 重写的方法 要去掉 abstract修饰:即: public返回类型 方法名(参数){}107 若一个类 为抽象类A 实现了某个接口,那么可以暂时不用重写 这个接口的abstract方法108 但是若抽象类A的子类不是抽象类,那么必须重写 所有的abstract方法109

110 接口回调 :相当于 上转型对象 ,这两个很类似111 接口回调:是指把 实现 某一个接口的类 B 创建的对象的 引用 b(newB()) 赋值给 接口声明的变量 a(A a;)112 那么接口变量 a 就可调用 被 这个 类B 重写的接口方法113 同样不能new 接口,因为没有任何实现,即没有分配内存114 由接口实现的多态是:不同类 在实现 同一个接口时 ,可能具有不同的实现方式,115 那么接口变量在回调接口方法 时,就可能 具有 多种多态116 面向抽象编程包括两种:面向抽象编程 和 面向接口编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值