父类的非私有化属性和方法可以默认继承到子类

继承:
父类(SuperClass)和 子类(SonClass)。
父类的非私有化属性和方法可以默认继承到子类。
Class Son extends Father{
}
而如果父类中的私有方法被子类调用的话,则编译报错。
父类的构造方法子类不可以继承,更不存在覆盖的问题。(非构造方法可以)
如果子类访问父类的构造方法,则在编译的时候提示访问不到该方法。
JAVA中不允许多继承,一个类有且只有一个父类(单继承)。
JAVA的数据结构为树型结构,而非网状。(JAVA通过接口和内部类实现多继承)

package TomText;
public class TomText_14 {

         public static void main(String[] args) {
          Date[] days = new Date[6];
          days[0] = new Date(2004, 4, 6);
          days[1] = new Date(2005, 4, 6);
          days[2] = new Date(2004, 6, 4);
          days[3] = new Date(2004, 4, 6);
          days[4] = new Date(2004, 5, 6);
          days[5] = new Date(2002, 8, 16);

          //sortForArray(days);
          bubbleSort(days);
          printArray(days);
          binarySearch2(days,days[3]);
         }
         /*
          * 选择排序
          */
         public static void sortForArray(Date[] d) {
          for(int i=0; i<d.length; i++) {
           int min = i;
           Date bigger;
           for(int j=i+1; j<d.length; j++) {
            if(d[min].compare(d[j]) > 0) {
             min = j;
            }
           }

           if(min != i) {
            bigger = d[i];
            d[i] = d[min];
            d[min] = bigger;
           }
          }
         }
         /*
          * 冒泡排序
          */
         public static void bubbleSort(Date[] d) {
          for(int i=d.length; i>1; i--) {
           Date temp;
           for(int j=0; j<i-1; j++) {
            if(d[j].compare(d[j+1])>0) {
             temp = d[j];
             d[j] = d[j+1];
             d[j+1] = temp;
            }
           }
          }
         }
         public static void printArray(Date[] d) {
          for(int i=0; i<d.length; i++) {
           System.out.println(d[i].year + "." +
                        d[i].month + "."+
                        d[i].day);
          }
         }
         /*
          * 二分法排序
          */
         public static void binarySearch(int[] i,int n) {
          int startNo = 0;
          int lastNo = i.length-1;
          int middle = (startNo + lastNo)/2;

          while(startNo <= lastNo) {
           if(middle == n) {
            System.out.println(middle);
            break;
           }else if(middle > n) {
            lastNo = middle -1;
           }else if(middle < n) {
            startNo = middle + 1;
           }
           middle = (startNo + lastNo)/2;
          }
         }
         /*
          * 形参是对象的二分法
          */
         public static void binarySearch2(Date[] d,Date day) {
          int startNo = 0;       //查找范围内的第一个数的下标
          int lastNo = d.length-1; //查找范围内的最后一个下标
          int middle = (startNo + lastNo)/2; //查找范围内的中间下标
          while(startNo <= lastNo) {
           if(d[middle].compare(day) == 0) {
            System.out.println(middle);
            break;   //必须有,否则有可能会无限循环
           }else if(d[middle].compare(day) == 1) {
            lastNo = middle -1;  //更新最后的下标
           }else if(d[middle].compare(day) == -1) {
            startNo = middle + 1;//更新第一个下标
           }
           //每次判断后需要更新中间下标
           middle = (startNo + lastNo)/2;
          }
         }

        }
        class Date {
         int year,month,day;

         Date(int y, int m, int d) {
          year = y;
          month = m;
          day = d;
         }

         public int compare(Date date) {
          return year > date.year ? 1
            : year < date.year ? -1
            : month > date.month ? 1
            : month < date.month ? -1
            : day > date.day ? 1
            : day < date.day ? -1
            : 0;
         }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值