Java学习3.0 面向对象 (高级篇)

6.1    继承的基本概念
    1.类的继承格式:
        class 父类{}
        class 子类 extends 父类{}
    2.子类对象在实例化之前会默认调用父类中的构造方法
        子类构造器中隐含super()的语法意思是调用父类的无参构造器
6.2    方法的覆盖(子类中定义了父类中同名的方法)
    3.子类覆盖父类时子类的方法权限要大于父类
       父类使用public子类也必须使用public
        private<default<public
6.3 super关键字的作用
    4.super必须在子类构造器的首行
    5.在子类中可以直接通过super.调用父类中的方法

继承的应用实例:

package com;

}
class Array{
    private int temp[];//数组的定义
    private int foot;//定义数组的脚标
    public Array(int len){
        if (len>0){
            this.temp=new int[len];//设置数组长度
        }else {
            this.temp=new int[1];//设置默认长度
        }
    }
    public boolean add(int i){
        if (this.foot<this.temp.length){//判断数组是否已经满了
            this.temp[foot]=i;//没满继续加
            foot++;//修改脚标
            return true;

        }else {
            return false;//添加失败
        }
    }
    public int[] getArray(){//获取全部数组
        return this.temp;
    }
}
class ReverseArray extends Array{//定义数组反转类
    public ReverseArray(int len){//设置数组大小
        super(len);//调用父类构造器
    }
    public int[] getArray(){//覆写getArray
        int center = super.getArray().length/2;//中间索引
        int head =0;//头部索引
        int tail=super.getArray().length-1;//尾部索引
        for (int x=0;x<center;x++){
            int temp=super.getArray()[head];//获取元素
            super.getArray()[head]=super.getArray()[tail];
            super.getArray()[tail]=temp;
            head++;
            tail--;

        }
return super.getArray();



    }

}
class SortArray extends Array{//数组排序子类
  public SortArray(int len){//接收数组个数
      super(len);
  }
  public int[] getArray(){
      java.util.Arrays.sort(super.getArray());//数组排序处理
      return super.getArray();//返回排序后的数组
  }
}

测试反转类:

public class ArrayDemo {
    public static void main(String[] args) {
        ReverseArray a=null;
        a=new ReverseArray(5);
        System.out.println(a.add(23)+"\t");
        System.out.println(a.add(21)+"\t");
        System.out.println(a.add(2)+"\t");
        System.out.println(a.add(42)+"\t");
        System.out.println(a.add(5)+"\t");
        System.out.println(a.add(6)+"\t");
        print(a.getArray());

    }
    public static void print(int i[]){
        for (int x=0;x<i.length;x++){
            System.out.print(i[x]+",");
        }
    }

结果:

true	
true	
true	
true	
true	
false	
5,42,2,21,23,

测试排序类:

public class ArrayDemo {
    public static void main(String[] args) {
        SortArray a=null;
        a=new SortArray(5);
        System.out.println(a.add(23)+"\t");
        System.out.println(a.add(21)+"\t");
        System.out.println(a.add(2)+"\t");
        System.out.println(a.add(42)+"\t");
        System.out.println(a.add(5)+"\t");
        System.out.println(a.add(6)+"\t");
        print(a.getArray());

    }
    public static void print(int i[]){
        for (int x=0;x<i.length;x++){
            System.out.print(i[x]+",");
        }
    }

结果:

true	
true	
true	
true	
true	
false	
2,5,21,23,42,


6.4 final 关键字
    6.final在Java中表示的意思是最终的意思,也可以称为完结器。可以使用final 关键字声明类,属性,方法
    7.在声明时要注意:
        final声明的类不能有子类;
        eg:
            final classA {}
            class B extends A{}   不能被继承,继承到头了

        final声明的类不能被覆盖;
        eg:
            class A{
               public final void print(){
                system.out.print{“Hello”}
                   }
                }
            class B extends A{
              public final void print(){
                system.out.print{“Hello”}
                   }
            }        不能被子类覆盖
        final声明的变量为常量,常量不可以被修改;
        eg:
            private final String INFO=“Hello”
            public final void print(){     INFO="hai"    } 不能被修改
    8.final 声明变量时要求全字母大写
    9.如果一个程序中使用 public static final 则称为全局常量
6.5 抽象类的基本概念
    Java可以创建一种专门的类用来当作父类,类似与模板。但不能直接使用抽象类创建对象,只能通过抽象类派生出新的类,再来创建对象。
    10.抽象类的定义及其使用规则:
        包含一个程抽象方法的类称必须是抽象类;
        抽象类和抽象方法都要使用abstract关键字声明;
        抽象方法只需要声明不需要实现;
        抽象类必须被子类继承,子类(如果不是抽象类)必须覆盖抽象类中的全部抽象方法;
    11.抽象类格式定义:
        absteact class 抽象类名称{
        属性;
        访问权限 返回值类型 方法名称(参数){
         [rerurn 返回值]
            }
        访问权限 absteact 返回值类型 方法名称(参数);
        \\在抽象方法中没有方法体
        }
    12.抽象类与普通类的区别:
        普通类可以根据自己的需求选择性的对父类方法进行覆写
        抽象类则强制要求子类覆写父类方法
    13.注意:
        抽象类不能使用final关键字修饰    无法被继承但抽象类必须被子类继承
        不要使用private声明        方便子类进行覆写
        抽象类中允许存在构造方法
6.6 接口的基本概念
    接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法组成。
    14.接口的定义格式:(接口的权限默认是public,默认变量是全局变量,默认方法是抽象方法)
        interface 接口名称{
             全局变量;
             抽象方法;
            }
    15.实现接口:
        class 子类 implements 接口A,接口B,......{    }
        一个子类可以继承多个接口,但要覆写全部的接口
    17.如果在开发中既要实现继承接口又要实现继承抽象类可以:
        class 子类 extends 抽象类 implements 接口A,接口B......{    }
    18,允许抽象类继承接口
        abstract class B implements A{}
    19.接口可以继承多个接口
        interface 子类接口 extends 父类接口A, 父类接口B......{    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值