小白第一步|JAVA继承特性

继承能干些什么呢?

继承是Java类与对象的重要特性之一,可以继承一个类的方法和状态并进行重写,以方便处理;

其中被继承的类我们称为父类(如杯子),继承后产生的类我们称为子类(如茶杯);

继承关系在现实生活中真的是随处可见:
学生 大学生
显示屏 液晶屏
通讯设备 手机……

那么继承有关的内容又有哪些呢?

一、最基本的父类:Object类

Object类是所有类的父类,我们可以在每个类中访问其方法状态
例如:
public class student
其相当于
public class student extends Object
在这里插入图片描述

这些看上去好像还不错的方法我们都可以直接调用,这就是Object类中的方法

二、访问权限

见过了那么多的public,自然会想一个十分有意思的问题:
“我为什么要每天打public?”
"这public有个什么用?"

答:
我们其实是有四种访问权限,public只是其中的一种,每个关键词有不同的访问范围

关键词 在同一类中 在同一包中 在不同包的子类中 在不同包的非子类中
public
protected
缺省
private

而子类继承父类,能继承所有的属性和方法,限于访问权限,部分属性和方法不能直接使用。
但是我们可以通过引用公用方法来访问私有数据域(这类似于get方法)

三、方法重写

父类的方法不能满足子类的需要,则子类可以覆盖父类的方法并改写。
要求:
1、必须要有继承关系
2、方法声明,除了访问权限可以扩大,方法名、方法返回值类型 、参数都必须完全一样(也就是说方法头不能动)。
自动转型:
子类对象可以自动的变为父类对象。
自动转型后,方法的调用以子类为准。
语法;
父类 对象名 = new 子类();
作用:规定一个父类对象,其使用经子类改写后的方法和状态(子类特有方法状态不能使用);

四、练习:美国队长,钢铁侠,灭霸打架(在线心疼钢铁侠)

美国队长 和 钢铁侠互相PK,采用回合制,每次攻击让对方的血量减少攻击方的攻击值,重复,
直到某一方的血量小于等于0结束,胜利的一方,继续和灭霸PK,灭霸每次攻击让对方的血量减少
灭霸的两倍攻击值,重复,直到某一方的血量小于等于。

输出:战斗的过程,战斗的结果
要求:每个类至多有一个攻击方法。

解答:
美国队长和钢铁侠的基本属性

在这里插入图片描述在这里插入图片描述

package attack;

public class character {
	//姓名属性
		public String name;
		//攻击力属性
		public int power;
		//初始血量属性
		public int init;
		public void attack(character a){
			System.out.println(name + "以" + power + "的攻击力去攻击" + a.name);
			a.init = a.init - power;
			System.out.println(a.name + "的血量剩余为" + a.init);
			if(a.init <= 0){
				System.out.println(a.name + "的血量清空,PK结束");
			}
			
		}
}

在这里插入图片描述
灭霸的基本属性

package attack;

public class Thanos extends character{
	public void attack(character a){
		System.out.println(name + "以" + power + "的攻击力去攻击" + a.name);
		a.init = a.init - power * 2;
		System.out.println(a.name + "的血量剩余为" + a.init);
		if(a.init <= 0){
			System.out.println(a.name + "的血量清空,PK结束");
		}
	}
	
}

主方法

package attack;

import java.util.Scanner;
public class mainer{
	public static void main(String[] args){
		
		Scanner input = new Scanner(System.in);
		//创建美国队长对象
		character Amer = new character();
		Amer.name = "Captain America";
		System.out.print("请输入美国队长的攻击值和血量");
		Amer.power = input.nextInt();
		Amer.init = input.nextInt();
		
		
		//创建钢铁侠对象
		character Iron = new character();
		Iron.name = "Iron Man";
		System.out.print("请输入钢铁侠的攻击值和血量");
		Iron.power = input.nextInt();
		Iron.init = input.nextInt();
		
		Thanos thanos = new Thanos();
		thanos.name = "Thanos";
		System.out.print("请输入灭霸的攻击值和血量");
		thanos.power = input.nextInt();
		thanos.init = input.nextInt();
		
		
		//攻击过程
				while(Amer.init >= 0 && Iron.init >= 0)
				{
					Amer.attack(Iron);
					if (Iron.init <= 0)
					{
						System.out.println("美国队长胜");
						break;
					}
					Iron.attack(Amer);
				}
				if(Amer.init > 0){
					System.out.println("美国队长胜");
					while(Amer.init >= 0 && thanos.init >= 0)
					{
						Amer.attack(thanos);
						if (thanos.init <= 0)
						{
							System.out.println("美国队长胜");
							break;
						}
						thanos.attack(Amer);
					}
					if(Amer.init > 0)
						System.out.println("美国队长胜");
					if(thanos.init > 0)
						System.out.println("灭霸胜");
				}
					
				if(Iron.init > 0){
					System.out.println("钢铁侠胜");
					while(Iron.init >= 0 && thanos.init >= 0)
					{
						Iron.attack(thanos);
						if (thanos.init <= 0)
						{
							System.out.println("钢铁侠胜");
							break;
						}
						thanos.attack(Iron);
					}
					if(thanos.init > 0)
						System.out.println("灭霸胜");
					if(Iron.init > 0)
						System.out.println("钢铁侠胜");
				}
							
	}
}

跑起来!!!!

请输入美国队长的攻击值和血量6 80
请输入钢铁侠的攻击值和血量8 60
请输入灭霸的攻击值和血量4 80
Captain America以6的攻击力去攻击Iron Man
Iron Man的血量剩余为54
Iron Man以8的攻击力去攻击Captain America
Captain America的血量剩余为72
Captain America以6的攻击力去攻击Iron Man
Iron Man的血量剩余为48
Iron Man以8的攻击力去攻击Captain America
Captain America的血量剩余为64
Captain America以6的攻击力去攻击Iron Man
Iron Man的血量剩余为42
Iron Man以8的攻击力去攻击Captain America
Captain America的血量剩余为56
Captain America以6的攻击力去攻击Iron Man
Iron Man的血量剩余为36
Iron Man以8的攻击力去攻击Captain America
Captain America的血量剩余为48
Captain America以6的攻击力去攻击Iron Man
Iron Man的血量剩余为30
Iron Man以8的攻击力去攻击Captain America
Captain America的血量剩余为40
Captain America以6的攻击力去攻击Iron Man
Iron Man的血量剩余为24
Iron Man以8的攻击力去攻击Captain America
Captain America的血量剩余为32
Captain America以6的攻击力去攻击Iron Man
Iron Man的血量剩余为18
Iron Man以8的攻击力去攻击Captain America
Captain America的血量剩余为24
Captain America以6的攻击力去攻击Iron Man
Iron Man的血量剩余为12
Iron Man以8的攻击力去攻击Captain America
Captain America的血量剩余为16
Captain America以6的攻击力去攻击Iron Man
Iron Man的血量剩余为6
Iron Man以8的攻击力去攻击Captain America
Captain America的血量剩余为8
Captain America以6的攻击力去攻击Iron Man
Iron Man的血量剩余为0
Iron Man的血量清空,PK结束
美国队长胜


Captain America以6的攻击力去攻击Thanos
Thanos的血量剩余为74
Thanos以4的攻击力去攻击Captain America
Captain America的血量剩余为0
Captain America的血量清空,PK结束
Captain America以6的攻击力去攻击Thanos
Thanos的血量剩余为68
Thanos以4的攻击力去攻击Captain America
Captain America的血量剩余为-8
Captain America的血量清空,PK结束
灭霸胜

发布了36 篇原创文章 · 获赞 11 · 访问量 2920

猜你喜欢

转载自blog.csdn.net/yeweij226/article/details/89763181