黑马程序员技术交流社区
标题:
Java面向对象 之 继承的练习
[打印本页]
作者:
Akm
时间:
2013-5-29 19:37
标题:
Java面向对象 之 继承的练习
本帖最后由 Akm 于 2013-5-29 19:40 编辑
现在要求定义一个数组类(Array),里面定义了一个整型数组,但是此整型数组属于动态分配大小,即:所有的大小由程序指定,并在此基础上实现以下的两个子类:
• 反转类:可以将数组的内容反转排列
• 排序类:可以对数组进行排序的操作
问:这样的类该如何实现?
本程序肯定是通过继承实现,每一个都应该是一个具体的操作类。
[hide=d10]
本程序中包含了以下的知识点:
1、继承的基本概念:扩充了类的功能
2、方法的覆写的作用
3、引用传递
4、数组的排序、foreach输出
[/hide]
作者:
First
时间:
2013-5-29 19:45
隐藏内容是什么意思?你自己的答案??
作者:
神之梦
时间:
2013-5-29 20:26
{:soso_e126:}
作者:
First
时间:
2013-5-29 23:40
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class MyDemo {
public static void main(String []args){
ReverseArray al = new ReverseArray();
SortArray sa = new SortArray();
al.add(1);
al.add(15);
al.add(7);
al.add(19);
al.add(5);
al.add(29);
al.add(9);
/*
al.add(7);
al.add(19);
al.add(5);
al.add(29);
al.add(9);
sa.add(7);
sa.add(19);
sa.add(5);
sa.add(29);
sa.add(9); */
sa.add(1);
sa.add(15);
sa.add(7);
sa.add(19);
sa.add(5);
sa.add(29);
sa.add(9);
System.out.println(al.toString());
//System.out.println(al);
al.reverse();
System.out.println(al.toString());
System.out.println(sa.toString());
sa.sort();
System.out.println(sa.toString());
}
}
class Array {
private int [] array = new int[10];
private int size =0;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int get(int index){
return array[index];
}
public int set(int index, int element){
array[index] = element;
return get(index);
}
public boolean add(int i){
size++;
System.out.println(size);
if(size>10)
array = copyArray(array);
array[size-1] = i;
return true;
}
private int[] copyArray(int[] array){
int []array1 = new int[array.length+1];
for(int i = 0; i<array.length;i++){
array1[i] = array[i];
}
return array1;
}
public boolean remove(int index){
if(index>=size)
return false;
else{
int[] array1 = new int[size - 1];
for(int i = 0, count = 0; i<size;i++){
if(i == index)
continue;
array1[count++] = array[i];
}
array = array1;
size--;
return true;
}
}
@Override
public String toString() {
// TODO Auto-generated method stub
Integer [] intList = new Integer[size];
for(int i = 0;i<size;i++){//注意角标越界。
intList[i] = get(i);
}
List list = Arrays.asList(intList);
return list.toString();
}
}
class ReverseArray extends Array{
public void reverse(){
int size = getSize();
int half = size>>1;
for(int i =0,x=0; i< half;i++){
x = get(i);
set(i, get(size-1-i));
set(size-1-i,x);
}
}
public void sort(){
int size = getSize();
for(int z=0,x=0;z<size-1;z++){
for(int y=z+1; y<size;y++){//y=z+1; 而不是1;
if(get(z)>get(y)){
x = get(z);
set(z, get(y));
set(y,x);
}
}
}
}
}
class SortArray extends Array{
public void sort(){
int size = getSize();
for(int z=0,x=0;z<size-1;z++){
for(int y=z+1; y<size;y++){
if(get(z)>get(y)){
x = get(z);
set(z, get(y));
set(y,x);
}
}
}
}
}
复制代码
看看我的答案能否满足你的要求,请指教
作者:
斗胆潇洒
时间:
2013-6-1 08:46
{:soso_e103:}
作者:
狂飙的yellow.co
时间:
2013-6-1 10:34
我去,这个也能给分
作者:
殇_心。
时间:
2013-6-1 18:10
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2