Java继承_隐藏(五)
来源:互联网 发布:mysql的sequence 编辑:程序博客网 时间:2024/06/05 15:06
隐藏含义:实际上存在,但是对外不可见。
上文,我们描述了子类对父类方法的重写,叫覆盖(Override),对子类而言,其实父类的方法隐藏了,但是依然存在的。我们可以测试一下:
package com.ws.basic;class GameObject{int life;public GameObject(int life) {super();this.life = life;}public int life_reduce(int ai_reduce){life = life - ai_reduce;return life;}public int life_add(int ai_add){life = life + ai_add;return life;}}class Creature extends GameObject {String mc;int attack;public Creature(String mc, int attack,int life) {super(life);this.mc = mc;this.attack = attack;}public void move() {System.out.println(mc+"在移动!");}public void normal_attack() {System.out.println(mc+"在普通攻击!");}}class Hero extends Creature{String name;String skill;public Hero(String name,String skill,String mc, int attack,int life) {super(mc,attack,life);this.name = name;this.skill = skill;} // 重写普通攻击方法public void normal_attack(){System.out.println(mc + name + "用火球攻击!");//调用父类的方法,测试是否存在super.normal_attack();}public void skill_attack(){System.out.println(mc + name + "用"+skill+"攻击!");}public void eat_food(int food){life_add(food);System.out.println(mc + name + "吃了"+food + "血,当前血量"+life);}}public class testjc { public static void main(String[] args) { Hero heroDfs = new Hero("甘道夫","暴风雪","大法师",14,450); heroDfs.normal_attack(); }}
结果:
大法师甘道夫用火球攻击!大法师在普通攻击!
除了方法存在隐藏,变量同样存在隐藏,简而言之就是,子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量被隐藏,直接看代码:
package com.ws.basic;class GameObject{int life;public GameObject(int life) {super();this.life = life;}public int life_reduce(int ai_reduce){life = life - ai_reduce;return life;}public int life_add(int ai_add){life = life + ai_add;return life;}}class Creature extends GameObject {String mc;int attack;public Creature(String mc, int attack,int life) {super(life);this.mc = mc;this.attack = attack;}public void move() {System.out.println(mc+"在移动!");}public void normal_attack() {System.out.println(mc+"在普通攻击!");}}class Hero extends Creature{String name;String skill;String mc="圣骑士";public Hero(String name,String skill,String mc, int attack,int life) {super(mc,attack,life);this.name = name;this.skill = skill;} public void skill_attack(){System.out.println(mc + name + "用"+skill+"攻击!");}public void eat_food(int food){life_add(food);System.out.println(mc + name + "吃了"+food + "血,当前血量"+life);}}public class testjc { public static void main(String[] args) { Hero heroDfs = new Hero("甘道夫","暴风雪","大法师",14,450); heroDfs.skill_attack(); }}
结果:
圣骑士甘道夫用暴风雪攻击!
可见,如果hero定义了成员变量mc,再调用hero的方法的时候,父类的mc就隐藏了。当然和方法一样,父类的mc依然存在的,只是对子类而言,不可见。简而言之,就是各管各的。
0 0
- Java继承_隐藏(五)
- Java(五)继承
- Java--基础(五)继承
- Java继承_重写(二)
- Java继承_基类Object(三)
- Java继承_初始化顺序(四)
- Java继承_内存分析(六)
- Java继承_常见问题(七)终篇
- Java泛型_继承
- Java学习五(继承、封装、 多态)
- java基础(五)------类和继承
- 别样JAVA学习(五)继承上(0.0)继承概述
- Java编程思想_笔记(五)
- Java 继承时的隐藏
- Java—隐藏封装、继承
- java五分钟O(∩_∩)O哈哈~继承好坑
- Java基础_面向对象_继承
- Java面向对象_继承
- Play Store下载应用失败解决
- JMS&MQ,从入门到精通(四)
- sqlServer分页存储过程的调用
- android(自动窗口跳转)-13
- 【C#】读取txt、csv等二维表
- Java继承_隐藏(五)
- jvm 内存结构图
- 两种取url的参数方法
- JavaEE学习笔记--CSS(2)
- 自注册DM(四)CMCC移动DM 实现方法
- java获取服务器的IP及端口
- 零基础学习Java编程语言需要掌握4大知识点
- vim集成环境的搭建
- H5EDU学员 jquery简历制作