正在我的水果店实现,因数据不能有效保存而进行的一筹莫展之际,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的信息,并都可以对其中内容进行更改!!! 问题就迎刃而解了。