JAVA 子类,父类的理解(美妙的树形关系)

正在我的水果店实现,因数据不能有效保存而进行的一筹莫展之际,Java中的子父类之间的美妙关系引起了我的注意。

如下是对Java子父类之间的美妙关系进行阐述:
以简单的A B C三类进行展开:

一,

直接上代码:


public class Market {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		B b = new B();
		System.out.println(b.sum2(3));
		System.out.print(b.sum3(4));
	}

}

class A {
	public int sum(int a, int b) {
		return a + b;
	}
	public int sum3(int d) {
		B b = new B();
		return d + b.sum2(d);
	}
}
class B extends A{
	public int sum2(int c) {
		return sum(1, 2) + c;
	}
}

很容易得出一个最基本的结论:1.子类可以直接使用父类的类方法,而父类不能直接用子类的类方法。(但可以通过调用子类实现)

二,
代码如下:

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class Market {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		B b = new B();
		System.out.println(b.sum2(3));
		System.out.println(b.sum3(4));
		C c = new C();
		System.out.println(c.sum4(4));
	}

}

class A {
	public int sum(int a, int b) {
		return a + b;
	}
	public int sum3(int d) {
		B b = new B();
		return d + b.sum2(d);
	}
}
class B extends A{
	public int sum2(int c) {
		return sum(1, 2) + c;
	}
}
class C extends A{
	public int sum4(int f) {
		B b = new B();
		return b.sum2(3) + f;
	}
}

不难得出第二个基本的结论:2.兄弟类不能互相调用彼此之间的类函数,但都可以通过调用相应类来调用相应类函数

如上图中的代码,C和B是兄弟类,他们的父类是A。

综上ABC就构成了开头说的美妙的 “树形” 关系:
在这里插入图片描述

大胆假设:若将重要数据储存在A类中,B类对数据修改,C类调用A中的数据是否是更改后的?若C更改数据,B类调用的是否也会是更新后的?

直接上代码:

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class Market {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		B b = new B();
		b.change();//更改了nium1 = 1;
		C c = new C();
		c.printchange();//输出,并更改muniu
		b.print();
		b.dioayong();
	}

}
class A{
	public static int nium1 = 100;
	public static int muniu = 4324;
}
class B extends A{
	public void change() {
		nium1 = 273984179;
	}
	public void print() {
		System.out.println(muniu);
	}
	public void dioayong() {
		C c = new C();
		c.printchange();
		c.printuu();
	}
}
class C extends A{
	public void printchange() {
		System.out.println(nium1);
		muniu = 10111;
	}
	public void printuu() {
		System.out.print(muniu);
	}
}

测试结果:
在这里插入图片描述
第三个基本的结论:3.兄弟类更改同父类的数据,是可以共享的

为了严谨我又构造了一个ABCD子父类关系:
代码如下:

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class Market {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		B b = new B();
		System.out.println(b.sum2(3));
		System.out.println(b.sum3(4));
		C c = new C();
		System.out.println(c.sum4(4));
		E e  = new E();
		System.out.println(e.sum5(1));
	}

}

class A {
	public int sum(int a, int b) {
		return a + b;
	}
	public int sum3(int d) {
		B b = new B();
		return d + b.sum2(d);
	}
}
class B extends A{
	public int sum2(int c) {
		return sum(1, 2) + c;
	}
}
class C extends A{
	public int sum4(int f) {
		B b = new B();
		return b.sum2(3) + f;
	}
}
class E extends B{
	public int sum5(int g) {
		return g + sum2(3) + sum(4,5);
	}
	
}

运行结果如下:
在这里插入图片描述
运行结果与上述三个结论完全吻合。
综上:
运用上述结论,在实现水果店管理系统的时候,完全可以将重要数据,如水果的数量质量....存入A父类中,这样B子类可以实现顾客购物,C类实现管理员添加水果种类和数量。B,C分别继承A类,这样B,C可以共享A的信息,并都可以对其中内容进行更改!!! 问题就迎刃而解了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值