`
feng1990liu
  • 浏览: 8303 次
  • 性别: 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()+"战死了");
	}


}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics