一、继承的语法格式
public class 类名(子类名,超类名,派生类名) extends (
父类、基类){ }
**Java的单继承性,只有一个直系子类
**如果父类中存在一个构造方法,则子类中必须存在一个跟他
相同的构造方法
二、能够继承与能够调用的区别
1、子类可以继承到父类的所有属性和方法
2、但是由于访问修饰符的问题,导致只有一部分属性和方法
能被子类和子类的对象调用,其中,调用规则如下:
//同包下,在子类中能调用的方法:public公有的、
protected受保护的和默认的属性方法
//不同包下,在子类中能调用的方法:public公有的,
protected受保护的属性方法
三、方法重写
当子类的某些方法中的元素与父类不同时需要方法重写。比如
public void study(){
//super.study();//调用父类的方法
System.out.println(this.getName()+"的
学习方式不同啦!");
}
重写的条件
1.必须要存在继承关系。
2.方法的返回值数据类型、方法名、参数个数、参数类型、参
数顺序都必须要和父类的完全一致。
3.子类重写方法时的访问修饰符范围可以大于或者等于父类方
法的访问修饰符。
**关于访问值大小比较的问题
重写父类的学习方法时,扩大访问值,void<pravit<public
四、super关键字和this关键字的区别
super:用于调用父类的方法
eg:super.study();
this:用于区分形参名跟属性名,或者调用具有某种类型和数
量的参数的方法
五、自动转型
自动转型来自于生活,往往是用大的范围来表示小的范围
在Java中要实现自动转型必须要存在继承关系
byte b = 10;
int i = b;
int的范围大于byte
格式:
父类名 对象名 = new 子类构造方法();
**在使用自动转型后,要注意,不能调用子类中自己定义的方
法,若存在方法重写,会自动调用重写后的方法
**我们曾经用到过的自动转型
.add(组件)
所以我们用的add()都是同一个~~~组件是JLable神马的父类
,已经用到了自动转型
六、关于练习
这次练习估计是最困扰的一次,希望这真的是最困扰的一次,
没有之一。
通过这一次的练习,我发现了自己思维上的几个漏洞
第一,分析问题时容易把问题搞得复杂化,本来精短的代码,
总是搞得很长
第二,在处理问题前没有一个清晰的思路和方法,总是摸索着
修改,不能一步到位,还丢三落四
第三,对于知识的理解不深入,浮于浅表,都是应试教育的恶
果。。。。。。
第四,思维惰性,自己下苦心研究的意志不够坚定。
**总结思路:
1 首先要清楚该分成几个部分,主函数部分,父类,两个子类,
同时由于有四个技能,所以可以写成一个技能类。
2 接着,分析父类。父类要写清楚属性与方法,其中属性包括血
量,名称,技能,技能要用一个数组来表示Skill[],Skill类
在另一个类中写明;方法则包括常规的,获取与设置名称、血
量、技能,还有对战方法,如下
public void fight(Hero hero){
//随机获取一个技能 length是10,随机
的就是0~9
int index = random.nextInt
(skill.length);
//让hero英雄的血量减少 hero受到攻击
hero.setBlood(hero.getBlood() - skill
[index].getAttack());
if(hero.getBlood()<0){
hero.setBlood(0);
}
System.out.print(hero.getName()+"受
到"+name+"使用"+skill[index].getName()+"技能攻击。");
System.out.println("\t"+hero.getName
()+"剩余的血量是"+hero.getBlood());
}
这是最核心的部分,尤其传入的参数的类型是Hero,而不是德
玛或者卡牌;随机获取技能也是核心,他避免了像我当初所想
,将每个技能都用一遍导致代码过长,思路混乱的问题。
3 然后,分析子类,两个子类有什么方法需要重写?有什么方法
需要自己创建?都是需要思考的问题举例德玛类
public Garen(String name, int blood, Skill[]
skill) {
super(name, blood, skill);
// System.out.println("Garen的构造方法");
}
public void fight(Hero hero){
super.fight(hero);//这并没有重写方法而是直接调用了父类的方法
}
}
4 关于Skill类就是基本的定义攻击力与技能名称属性还有设置与获取属性的方法
5 最后就是主函数,主函数一定要思路清楚,什么方法在何处调用,怎么是用循环控制,现贴出代码如下
package cn.netjava.lesson06_2;
public class Game {
/**
* @param args
*/
public static void main(String[] args) {
Skill [] gSkill = {new Skill("普通攻击",10),new Skill("致命打击",100),new Skill("勇气",200),new Skill("审判",300),new Skill("德玛西亚正义",400)};
Garen garen = new Garen("德玛",1000,gSkill);
Skill [] tSkill = {new Skill("普通攻击",20),new Skill("万能牌",150),new Skill("选牌",250),new Skill("卡牌骗术",350),new Skill("命运",450)};
Twisted twisted = new Twisted("卡牌",1000,tSkill);
while(garen.getBlood() > 0 && twisted.getBlood() > 0){
garen.fight(twisted);
if(win(twisted)){
System.out.println(garen.getName()+"胜利!");
break;
}
twisted.fight(garen);
if(win(garen)){
System.out.println(twisted.getName()+"胜利!");
break;
}
}
}
/**
* 判断输赢的方法
* @param hero被攻击的对象
* @return 返回true表示hero对象挂了
*/
public static boolean win(Hero hero){
if(hero.getBlood() <= 0){
return true;
}
return false;
}
}
分享到:
相关推荐
这个"继承类的源代码"文件集合,可能是为了演示如何在OC中实现继承机制以及在实际项目中的应用。以下是对这一主题的详细解释。 1. **继承的基本概念**: 继承允许我们创建一个新类(子类或派生类),该类基于已...
在Java编程语言中,继承是面向对象特性之一,它允许我们创建一个类(子类或派生类)作为现有类(父类或基类)的扩展。这种设计模式有助于代码重用,使得子类可以继承父类的属性和方法,并且可以添加新的功能或覆盖已...
继承是面向对象的一个特性,一个类可以继承自另一个类,继承的类被称为子类或派生类,被继承的类被称为基类或父类。子类会继承父类的所有非私有成员,包括字段、方法和属性。这样,子类可以复用父类的代码,并在此...
在上述代码中,`Dog`类继承了`Animal`类,并且重写了`eat()`方法以符合狗的饮食习惯。`super(name)`调用父类的构造器,确保子类也能初始化父类的属性。 接下来,我们讨论多态性。多态性是面向对象的另一个关键特性...
例如,如果有一个类`Animal`,我们可以创建一个新的类`Dog`,这样`Dog`就会继承`Animal`的所有属性和方法: ```csharp public class Animal { public string Name { get; set; } public void Eat() { Console....
java 实验 继承与多态rectAngle 定义矩形类,用户输入矩形的长与宽,程序计算其面积和周长;派生子类正方形类,定义一个接口Printable源代码
封装继承多态总结
### JAVA中的继承学习总结 #### 一、Java中的继承概念 继承是面向对象编程(OOP)的一个核心概念,它使得我们可以定义一个类继承另一个类的字段和方法。这样做的好处是可以减少代码冗余,提高代码复用性。在Java中,...
{实验报告需单独下载,不过源代码里有注释} ...总结:先建立一个抽象类shape,然后建立一个核心类求体积(面积*高),再建立各种实例图形(对抽象类的继承),直接可输出图形体积,即实现了代码的复用。
类继承的方法,关于类的写法,类的继承方式.
在Java编程语言中,类的继承是面向对象编程的一个核心概念,它允许我们创建新的类(子类)基于已存在的类(父类或超类)。继承提供了代码的复用性,使得子类可以共享父类的属性和方法,同时还可以添加自己的特定功能...
java类和对象继承多态性 java类和对象继承多态性是java语言中的一种基本机制,它允许开发者创建一个新的类,并继承已有的类的属性和行为。这种机制可以提高代码的复用性和维护性。 继承是java语言中的一种机制,...
java代码-使用java解决Square,Circle继承Shape类,Rectangle继Square的源代码 ——学习参考资料:仅用于个人学习使用!
第6章和第7章可能会涵盖类的设计、继承、多态性和封装等概念,这些都是编写可维护和可扩展代码的基础。 2. **MFC(Microsoft Foundation Classes)框架**:MFC是微软为简化Windows应用程序开发而创建的库,它提供了...
c++继承与派生总结 面向对象的程序设计中提供了类的继承机制,允许...以原有的类为基础产生新的类,我们就说新类继承了原有类的特征,也就是说从原有类派生了新类。 类的派生机制的好处在于:代码的重用和可扩充性。
总结一下,C#的继承机制为我们提供了代码复用、类层次结构构建以及多态性等优势。通过理解和熟练运用这些知识点,开发者能够构建出更加灵活和可维护的软件系统。在实际编程中,根据需求选择合适的继承策略,将使我们...
虚继承的代码说明(附注释)
在C#编程语言中,继承是面向对象编程的一个核心特性,它允许我们创建一个新类,这个新类可以从已存在的类派生,并继承其属性和方法。这样可以提高代码的重用性和可维护性,避免了重复编写相似的代码。在本资源中,...
在C++编程语言中,有时候我们可能需要创建一个类,使其不能被其他类继承,以保护类的结构和防止不合理的扩展。标题所提到的"不能继承的类",其目的是为了实现一种类的封闭性,确保其设计的意图不被误用。描述中提到...
在C++编程语言中,继承是面向对象编程的一个核心特性,它允许我们创建一个新类(子类或派生类)来扩展或修改已存在的类(父类或基类)的功能。在这个特定的问题中,"c++继承类(StudentAndTeacher继承至Person" 提示...