扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
面向对象程序设计(Object-Oriented Programming)是一种起源于六十年代,发展已经将近三十年的程序设计思想。其自身理论已十分完善,并被多种面向对象程序设计语言(Object-Oriented Programming Language,以下简称OOPL)实现。对象是对现实世界实体的模拟,由现实实体的过程或信息牲来定义。一个对象可被认为是一个把数据(属性)和程序(方法)封装在一起的实体,这个程序产生该对象的动作或对它接受到的外界信号的反应。这些对象操作有时称为方法。区别面向对象的开发和传统过程的开发的要素有:对象识别和抽象、封装、多态性和继承。
专注于为中小企业提供网站制作、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业诏安免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
如图,我加了赋值name用于演示证明我的构造方法是真正能够实现存入对象到student里面的。
源代码请在网页端看(手机也不能运行程序嘛)
public class 学生缴费 {
String name;
int age;
boolean isFee;
static int num;
static 学生缴费[] student = new 学生缴费[num];
public 学生缴费(String name) {
num++;
//在这里实现往数组student里添加主方法里创建的对象,也就是说主方法每创建一个对象,就把该对象加入这个student数组里
学生缴费[] newArr = new 学生缴费[num]; //新建一个空间来扩容数组
System.arraycopy(student,0, newArr,0 ,student.length); //将原数组内容复制到新数组
newArr[num-1]=this; //存入本次构造的“学生缴费”对象
student=newArr; //改变引用(原数组空间会自动释放)
this.name=name; //用于演示,证明数组student中确实存有该学生的信息
}
void Fee() {
isFee = true;
}
public static void main(String[] args) {
学生缴费 x = new 学生缴费("x");
学生缴费 y = new 学生缴费("y");
学生缴费 z = new 学生缴费("z");
//下面代码用于演示成功达到目的
for (学生缴费 学生 : 学生缴费.student) {
System.out.println("学生名字分别是:"+学生.name);
}
System.out.println(学生缴费.num);
System.out.println(学生缴费.student.length);
//System.out.println("h");
//问题见上面的构造方法
}
}
代码中我给构造方法加了name参数,是为了演示,你回答时可以去掉。还有什么不明白的吗?
把 人 封装成一个类Person,继承这个类 变有了 人应该有的属性
把 家庭成员关系封装一个类Family,继承这个类有了家庭关系的属性
把工作封装成一个接口Jop,继承这个接口实现了工作的方法
由于Person 和 Family 属性都是固定的,即每个人的情况基本都一样所以封装成类
Jop 则是因为 每个人的工作不一样,所有做成接口,究竟是什么样的工作让这个人来实现
这里Person 和 Family需要的属性并不多,所以我统一将他们封装了一个类 Person 实现代码如下:
public class XiaoHong extends Person implements Jop {
public XiaoHong(String name, String sex, String Father, String Mother,
String Son) {
super(name, sex, Father, Mother, Son);
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
XiaoHong xiaohong = new XiaoHong("小红","女","李雷", "韩梅梅", "讨厌啦!人家还小!");
System.out.println(xiaohong);
xiaohong.work();
}
@Override
public void work() {
System.out.println("我是一个高中生");
}
}
/********************************************************************************/
public class Person {
private String name = "I Don't Know";
private String sex = "I Don't Know";
private String Father = "I Don't Know";
private String Mother = "I Don't Know";
private String Son = "I Don't Know";
public Person(String name, String sex, String myFather, String myMother,
String mySon) {
super();
this.name = name;
this.sex = sex;
this.Father = myFather;
this.Mother = myMother;
this.Son = mySon;
}
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public String getMyFather() {
return Father;
}
public String getMyMother() {
return Mother;
}
public String getMySon() {
return Son;
}
@Override
public String toString() {
return "Person [name=" + name + ", sex=" + sex + ", Father="
+ Father + ", Mother=" + Mother + ", Son=" + Son
+ "]";
}
}
/******************************************************************************/
public interface Jop {
public void work();
}
接口:FactorialImp
抽象类:FactorialAbs
实现计算阶乘n!的类:Fatorial
代码:
/**
*
* 阶乘计算器
*
* 接口
*/
public interface FactorialImp {
// 计算阶乘n!的值
long factorial(int n);
}
/**
*
* 阶乘计算器
*
* 抽象类 继承 FactorialImp
*/
public abstract class FactorialAbs implements FactorialImp {
/**
* 实现计算阶乘n!的值的方法
*/
public long factorial(int n) {
return multiplicationCount(n, n - 1);
}
/**
* 增加抽象方法--计算两数相乘
*
* @param param1Int
* @param param2Int
* @return 两数相乘的积
*/
abstract long multiplicationCount(long param1Int, long param2Int);
}
/**
* 实现阶乘计算器类
*
*/
public class Fatorial extends FactorialAbs {
@Override
long multiplicationCount(long param1Int, long param2Int) {
if (param2Int == 1) {
return param1Int;
} else {
return multiplicationCount(param1Int * param2Int, param2Int - 1);
}
}
}
/**
* 测试类
*
*/
public class Test {
public static void main(String[] args) {
Fatorial localFatorial = new Fatorial();
System.out.println("100! = " + localFatorial.factorial(10));
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流