`
feng1990liu
  • 浏览: 8613 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

继承总结

 
阅读更多

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的继承总结.doc

    "Java继承总结" Java中的继承是面向对象三大特性之一,在知识点上存在许多重要的细节。下面将对Java继承的基本概念、语法格式、继承关系、方法重写、自动转型等进行详细的总结和分析。 一、继承的基本概念 继承是...

    圣诞树python-32-继承总结.ev4.rar

    标题中的“圣诞树python-32-继承总结”暗示了这是一个关于Python编程语言的教程,具体涉及的是类的继承概念。在Python中,继承是面向对象编程的一个关键特性,允许我们创建一个类(子类)作为另一个类(父类)的扩展...

    python 零基础学习篇面向对象编程继承15 继承总结.mp4

    python 零基础学习篇

    封装继承多态总结

    封装继承多态总结

    继承与派生总结

    c++继承与派生总结 面向对象的程序设计中提供了类的继承机制,允许程序员在保持原有类特性的基础上,进行更具体、更详细的类的定义。以原有的类为基础产生新的类,我们就说新类继承了原有类的特征,也就是说从原有类...

    VB.NET面向对象的实现

    &lt;本简缩教程的内容有:  1.创建类:类关键字、类及名空间、创建方法、创建属性、重载方法等。  2.... 3.继承:实现基本的继承、阻止继承、继承与辖域、保护方法、重载方法、重载与 构造方法、创建基类以及... 总结

    Java方法继承、方法重载、方法覆盖总结

    ### Java方法继承、方法重载、方法覆盖总结 在Java编程语言中,方法继承、方法重载、方法覆盖是三个非常重要的概念。它们之间既有关联又有区别,掌握这些概念对于深入理解面向对象编程有着至关重要的作用。 #### ...

    继承和抽象类的总结

    这个文档总结概括了继承和抽象类的相关知识以及需要注意的事项

    C++三种继承方式总结,帮你快速理解继承,进入C++高手

    C++三种继承方式总结 C++语言中有三种继承方式:public继承、protected继承和private继承。这些继承方式主要是为了改变基类成员的访问属性,使得派生类可以访问基类的成员变量和成员函数。 首先,让我们了解一下类...

    javascript继承总结

    总结来说,JavaScript提供了多种继承方式,每种方式都有其特点和适用场景。原型链继承适合处理属性继承,而构造函数继承则适用于方法的继承。组合式继承是常用的继承模式,但存在性能问题。寄生式组合继承解决了这个...

    java基础继承封装多态

    本资源摘要信息将对 Java 基础知识点进行总结,涵盖继承、封装、多态等概念,并对面向对象的设计、数据库设计模式等进行讲解。 继承 继承是 Java 中的一种机制,允许一个类继承另一个类的属性和方法。继承的语法是...

    JS继承.txtJS继承.txt

    ### 总结 以上就是JavaScript中几种常见的继承方式,每种方式都有其适用场景和局限性。在实际开发中,根据具体需求选择合适的继承方式是非常重要的。例如,在需要传递初始化参数时,可以考虑使用构造函数继承或组合...

    C#完全手册

    - **继承总结**:总结继承的相关概念及其在C#中的应用。 #### 第四部分:深入了解C# ##### 第十五章:接口 - **15.1 组件编程技术** - **接口概念**:定义了对象间交互的契约。 - **15.2 接口定义** - **定义...

    WPF可继承窗体

    总结,"WPF可继承窗体"是指在WPF中创建一个基础的窗体类,它包含了通用的样式和行为,然后其他窗体可以继承这个基础类,以此来实现代码的复用和维护。这涉及到XAML的布局和样式定义,以及C#中类的继承和事件处理。...

    C++之继承思维导图的总结

    C++之继承思维导图的总结

    Java实验报告——类的继承、多态的应用

    总结来说,这个实验报告通过实际编程练习,帮助我们巩固了Java中抽象类和抽象方法的定义,以及类的继承和多态性这两个核心概念。通过设计和实现学生管理类,我们可以更深入地理解这些概念在实际问题解决中的应用。

    C#第六章 初始继承和多态.pdf

    C#第六章 初始继承和多态.pdfC#第六章 初始继承和多态.pdfC#第六章 初始继承和多态.pdf C#第六章 初始继承和多态.pdfC#第六章 初始继承和多态.pdf

    再论组合和继承

    总结来说,继承和组合是面向对象编程中的关键概念,它们分别代表了“is-a”和“has-a”的关系。理解并熟练掌握这两者,将有助于开发出更加高效、可维护的代码。在C++中,灵活运用继承和组合,能够实现丰富的类层次...

    js继承.doc

    总结来说,JavaScript的继承机制是其灵活性的关键之一,但也带来了学习曲线。理解并掌握这些继承方式,可以帮助开发者更有效地构建可扩展和可维护的代码。通过不断实践和比较,我们可以更好地利用这些机制,提高代码...

Global site tag (gtag.js) - Google Analytics