1.为什么要用继承
因为子类中的属性和方法与总父类中方法与属性相似,为节省代码(子类多对象是更能体现),子类直接继承父类中的全部属性和
方法,虽然都继承了,但因为权限不一样,子类可能不能调用父类中的方法
2.继承
2.1继承关键字 extends 一个类只能继承一个父类
2.2继承基本格式
public class 类名(子类,超类,派生类) extends 类名(父类,基类){
}
3.继承使用权限
3.1 子类继承父类的全部方法和属性
3.2 子类和父类在同一个包下,子类可以调用的方法和属性
只有私有的属性和方法不可以调用
3.3 子类和父类不再同一个包下,子类可以调用的属性和方法
受保护的和公用的
不同包差别在于默认的属性和方法
4.方法的重写
条件 4.1必须具有继承关系
4.2方法的名称,返回值,参数的类型,顺序,个数必须与类中的方法一职(与重载的区别)
4.3子类方法的权限不能小于父类的权限
5.自动转型
必须存在继承关系
格式 父类名 对象名=new 子类名();
自动转型编译错误的原因
1.变异机制的文=问题
2.java在编译时只会根据对象名的类型进行一一编译
会将你调用方法拿到父类中进行一一比较,如果找不到你调用的方法,则直接抛出编译错误
6.多态
多态是由方法重载,继承,方法重写,自动转型等技术的组合。每个人是不同的,虽然同属一个人类。
7.练习
1.回合制游戏:奥托曼可以攻击小怪兽,奥托曼可以攻击其他的奥托曼,
知道一方的血量为0的时候结束战斗,输出谁胜利了!
package jicheng0629; public class Manager { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Outman out01=new BigOutman(); BigOutman out02=new BigOutman(); Monster mon=new Monster(); out01.setName("奥特曼"); out02.setName("小奥特曼"); mon.setName("怪兽"); out01.setBlood(10); out02.setBlood(11); mon.setBlood(9); while(out01.getBlood()>0&&out02.getBlood()>0&&mon.getBlood()>0){ if(out01.getBlood()>0) out01.fight(mon); if(out01.getBlood()>0) out01.fight(out02); if(out02.getBlood()>0) out02.fight(mon); if(out02.getBlood()>0) out02.fight(out01); if(mon.getBlood()>0) mon.fight(out02); if(mon.getBlood()>0) mon.fight(out01); } } } package jicheng0629; public class BigOutman extends Outman { public void fight(Monster mon){ mon.setBlood(mon.getBlood()-3); System.out.println(mon.getName()+"受到攻击,血量为"+mon.getBlood()); if(mon.getBlood()<=0)System.out.println(mon.getName()+"战死了"); } } package jicheng0629; public class Monster extends Outman{ private String name;//定义名字属性 private int blood;//定义血量属性 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getBlood() { return blood; } public void setBlood(int blood) { this.blood = blood; } public void fight(Outman out){ out.setBlood(out.getBlood()-5); System.out.println(out.getName()+"受到攻击,血量为"+out.getBlood()); if(out.getBlood()<=0) System.out.println(out.getName()+"战死了"); } } package jicheng0629; //建立奥特曼类 public class Outman { private String name;//定义名字属性 private int blood;//定义血量属性 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getBlood() { return blood; } public void setBlood(int blood) { this.blood = blood; } // public void fight(Monster mon){ // mon.setBlood(mon.getBlood()-1); // System.out.println(mon.getName()+"受到攻击,血量为"+mon.getBlood()); // if(mon.getBlood()<=0) // System.out.println(mon.getName()+"战死了"); // } public void fight(Outman out){ out.setBlood(out.getBlood()-2); // System.out.println(out.getName()+"受到攻击,血量为"+out.getBlood()); // if(out.getBlood()<=0)System.out.println(out.getName()+"战死了"); } }
相关推荐
"Java继承总结" Java中的继承是面向对象三大特性之一,在知识点上存在许多重要的细节。下面将对Java继承的基本概念、语法格式、继承关系、方法重写、自动转型等进行详细的总结和分析。 一、继承的基本概念 继承是...
标题中的“圣诞树python-32-继承总结”暗示了这是一个关于Python编程语言的教程,具体涉及的是类的继承概念。在Python中,继承是面向对象编程的一个关键特性,允许我们创建一个类(子类)作为另一个类(父类)的扩展...
python 零基础学习篇
封装继承多态总结
c++继承与派生总结 面向对象的程序设计中提供了类的继承机制,允许程序员在保持原有类特性的基础上,进行更具体、更详细的类的定义。以原有的类为基础产生新的类,我们就说新类继承了原有类的特征,也就是说从原有类...
<本简缩教程的内容有: 1.创建类:类关键字、类及名空间、创建方法、创建属性、重载方法等。 2.... 3.继承:实现基本的继承、阻止继承、继承与辖域、保护方法、重载方法、重载与 构造方法、创建基类以及... 总结
### Java方法继承、方法重载、方法覆盖总结 在Java编程语言中,方法继承、方法重载、方法覆盖是三个非常重要的概念。它们之间既有关联又有区别,掌握这些概念对于深入理解面向对象编程有着至关重要的作用。 #### ...
这个文档总结概括了继承和抽象类的相关知识以及需要注意的事项
C++三种继承方式总结 C++语言中有三种继承方式:public继承、protected继承和private继承。这些继承方式主要是为了改变基类成员的访问属性,使得派生类可以访问基类的成员变量和成员函数。 首先,让我们了解一下类...
总结来说,JavaScript提供了多种继承方式,每种方式都有其特点和适用场景。原型链继承适合处理属性继承,而构造函数继承则适用于方法的继承。组合式继承是常用的继承模式,但存在性能问题。寄生式组合继承解决了这个...
本资源摘要信息将对 Java 基础知识点进行总结,涵盖继承、封装、多态等概念,并对面向对象的设计、数据库设计模式等进行讲解。 继承 继承是 Java 中的一种机制,允许一个类继承另一个类的属性和方法。继承的语法是...
### 总结 以上就是JavaScript中几种常见的继承方式,每种方式都有其适用场景和局限性。在实际开发中,根据具体需求选择合适的继承方式是非常重要的。例如,在需要传递初始化参数时,可以考虑使用构造函数继承或组合...
- **继承总结**:总结继承的相关概念及其在C#中的应用。 #### 第四部分:深入了解C# ##### 第十五章:接口 - **15.1 组件编程技术** - **接口概念**:定义了对象间交互的契约。 - **15.2 接口定义** - **定义...
总结,"WPF可继承窗体"是指在WPF中创建一个基础的窗体类,它包含了通用的样式和行为,然后其他窗体可以继承这个基础类,以此来实现代码的复用和维护。这涉及到XAML的布局和样式定义,以及C#中类的继承和事件处理。...
C++之继承思维导图的总结
总结来说,这个实验报告通过实际编程练习,帮助我们巩固了Java中抽象类和抽象方法的定义,以及类的继承和多态性这两个核心概念。通过设计和实现学生管理类,我们可以更深入地理解这些概念在实际问题解决中的应用。
C#第六章 初始继承和多态.pdfC#第六章 初始继承和多态.pdfC#第六章 初始继承和多态.pdf C#第六章 初始继承和多态.pdfC#第六章 初始继承和多态.pdf
总结来说,继承和组合是面向对象编程中的关键概念,它们分别代表了“is-a”和“has-a”的关系。理解并熟练掌握这两者,将有助于开发出更加高效、可维护的代码。在C++中,灵活运用继承和组合,能够实现丰富的类层次...
总结来说,JavaScript的继承机制是其灵活性的关键之一,但也带来了学习曲线。理解并掌握这些继承方式,可以帮助开发者更有效地构建可扩展和可维护的代码。通过不断实践和比较,我们可以更好地利用这些机制,提高代码...