Java继承之object类、继承小练习和继承简单工厂模式

1、object类常见方法

(1)Java中,所有类都直接或间接继承自java.lang.Object类,Object类可以说是Java中所有类的祖先即根类

(2)Java中任何类都继承了Object类中的方法,主要有:toString()equals()、hashcode()、clone()、getClass()、finalize()

可以根据需求,适当地对object类中地方法如toString()equals()进行重写,示例:

package jicheng.zhangkun.java;

class Person{
	String name;
	String address;
	
	public void printInfo(){
		System.out.println("Person name: "+name);
	}
	public void printAddress(){
		System.out.println("Person address: "+address);
	}
	public String toString() { //重写toString(),输出打印我们想要的结果
		return "person message:"+name+","+address;
	}
	public boolean equals(Object arg0) { //重写equals(),可判断两个实例化对象是否相同
		Person p = (Person)arg0;  //将arg0强制转换成Person类
		if (this.name == p.name && this.address == p.address){
			return true;
		}
		else {
			return false;
		}
	}
}

public class Test {
	
	public static void main(String[] args) {
		Person p = new Person();
		p.name = "张坤";
		p.address = "上海";
		System.out.println(p.toString());
		
		Person p2 = new Person();
		p2.name = "张坤";
		p2.address = "上海";
		System.out.println(p2.toString());
		
		System.out.println(p.equals(p2));
	}
}

运行结果:

person message:王五,北京
person message:六二,上海
false

2、继承小练习

package chiji.zhangkun.java;

class Weapon{
	String name;
	
	public void weaponAttack(){
		System.out.println("武器攻击");
	}
}

class Player{
	String name;
	String rank;
	Weapon weapon;
	
	public void attack(){
		System.out.println("玩家攻击");
	}
}

class K98 extends Weapon{
	String name;
	public void weaponAttack(){
		System.out.println("98K攻击");
	}
}
class M4A1 extends Weapon{
	String name;
	public void weaponAttack(){
		System.out.println("M4A1攻击");
	}
}

public class Chiji {
	
	public static void main(String[] args) {
		Player p = new Player();
		p.name = "张坤";
		p.rank = "荣耀王者";
		p.weapon = new Weapon();
		p.attack();
		
		p.weapon = new Weapon();
		p.weapon.weaponAttack();
		
		p.weapon = new K98();   //多态
		p.weapon.weaponAttack();

		p.weapon = new M4A1();  //多态
		p.weapon.weaponAttack();
	}
}

运行结果:

玩家攻击
武器攻击
98K攻击
M4A1攻击

3、继承简单工厂模式

在智能家居项目中,有涉及到简单工厂模式,核心思想就是把指令和设备看作两个工厂,将各设备以及指令以链表的形式串联起来,再通过设备名和指令名分别进行链表的查找。对于Java面向对象的编程语言,实现简单工厂模式就很简单了,简单工厂代码示例如下:

class Fruit{
	String name;
	public void grup(){
		System.out.println("好吃的水果");
	}
	
	public Fruit(String name){
		this.name = name;
	}
}

class Apple extends Fruit{
	public void grup(){
		System.out.println("好吃的苹果");
	}
	public Apple(String name){
		super(name);
	}
}
class Peach extends Fruit{
	public void grup(){
		System.out.println("好吃的莉");
	}
	public Peach(String name){
		super(name);
	}
}
class Factory{
	public static Fruit getFruit(String name){
		if (name == "苹果"){
			return new Apple(name);
		}
		else if (name == "莉"){
			return new Peach(name);
		}
		else if (name == "水果"){
			return new Fruit(name);
		}
		else {
			return null;
		}
	}
}
public class Test {
	public static void main(String[] args) {
		Factory.getFruit("水果").grup();
		Factory.getFruit("苹果").grup();
		Factory.getFruit("莉").grup();
	}
}

在实际项目中,可把“水果”、“苹果”、“莉”继承Fruit后分文件写。

运行结果:

好吃的水果
好吃的苹果
好吃的莉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值