Java语言用面向对象的方式定义一个列表类,这个列表类的插入必须通过方法插入,不能通过代码插入,代码插入和方法插入的方法的区别是什么
我觉得有点误区,可以列表插也可以代码做到,代码插入比如list.add(item),可以在任何地方插入元素。方法插入比如nsert(item),只能通过调用该方法来插入元素。方法插入封装性和可维护性更好一点,并且大部分细节人为是看不到的,被封装在方法内部,这样调用出错的机率还更低了
效果如图
对比分析, 重点我做了加粗:
代码中定义了MyList的列表类,并通过List来存储列表的元素,在类的构造函数中,初始化了一个ArrayList实例作为底层的数据结构,
insert方法是用于插入元素的方法, 它接受一个参数item,并将其添加到items列表中.
这里使用方法插入元素,可以更好地封装和控制列表类的行为,
方法插入可以进行各种操作,例如检查元素的有效性、触发事件或通知其他组件等等等的 , 用起来比较丝滑,我们只需要修改插入方法的实现,而不需要在代码中的多个位置修改.
相比之下,直接在代码中插入元素可能会导致 代码重复和维护困难 . 如果有多个地方需要插入元素,每次都需要编写相同的代码段,这可能增加出错的风险,并且不方便统一管理和修改.
也就是说, 通过方法插入元素可以更好地遵循面向对象编程的原则,将操作封装在类的方法中,提高代码的可读性、可维护性和灵活性。
代码 :
import java.util.ArrayList;
import java.util.List;
public class MyList {
private List<Object> items;
public MyList() {
items = new ArrayList<>();
}
public void insert(Object item) {
items.add(item);
}
public List<Object> getItems() {
return items;
}
public static void main(String[] args) {
MyList myList = new MyList();
myList.insert("Item 1");
myList.insert("Item 2");
myList.insert("Item 3");
List<Object> itemList = myList.getItems();
for (Object item : itemList) {
System.out.println(item);
}
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:值类型:基本数据类型
引用类型:除基本数据类型之外的类型
1.值传递:适用于基本数据类型和不可变类(String,基本类型包装类型是引用类型,但是遵循值传递规则),传递的是数据的拷贝,被调用对象对新数据的改变不影响原数据的取值
2.引用数据类型:传递的是引用地址的拷贝,被调用对象对新数据的改变影响原数据的取值,因为新数据和原数据的引用虽然不同但却指向堆中的同一数据对象。
package com.wugeek.test;
/**
* @author 作者 :peanut.w
* @version 创建时间:2017年12月9日 下午4:13:17
* 类说明
*/
public class TestPass {
int a=123;//基本数据类型int
String b="123";//特殊的类string
StringBuffer c=new StringBuffer("123");//引用数据类型
public void method(){
this.changeInt(a);
System.out.println(a);
this.changeString(b);
System.out.println(b);
this.changeStringBuffer(c);
System.out.println(c);
}
public void changeInt(int x){
x=1234;
}
public void changeString(String y){
y="1235";
}
public void changeStringBuffer(StringBuffer stringBuffer){
stringBuffer.append(456);
}
public static void main(String [] args){
TestPass test =new TestPass();
test.method();
}
//输出结果:123 123 123456
}