2020.11.20

Arrays类
什么是Arrays类:
java.util.Arrays包下,主要是用来操作数组,里面提供很多操作api方法,主要是【排序】和【搜索】方法
特点
1.主要用来操作数组
2.里面封装的全部都是静态方法,调用简单 类名.方法名。
操作方法(操作数组)
1.public static String toString(int[] arr) 返回指定数组的字符串形式

2.public static void sort(int[] arr): //数组从小到大升序排序

3.public static int binarySearch(int[] arr,int key); 使用二分搜索法,来搜索指定的int数组,以获得指定数值,key指的是在数组中要要搜索的值,返回值int表示搜索之所在的索引。二分搜索法,一半一半的搜索
注意:
1.使用的时候数组元素必须先经过【升序排序】在进行搜索得到之后的索引值是排序之后的索引值
2.没找到返回【负数值】

4.public static void fill(int[] arr,int val); 把val值填满数组

Math类:
什么是math类:
java.longl.Math; 用于基本数学运算

特点:
1.包含了很多的基本数学运算,指数,幂次方,平方根,三角函数
2.里面的方法都是静态方法·,可以直接调用。

操作使用
1.public static double abs(double a); 返回double值得绝对值
2.public static double ceil(double a); 数字往上取整,返回大于等于参数的最小整数
3.public static double floor(double a); 向下取整,返回小于等于参数最小整数
4.public static long round(double a);返回最接近参数的long类型,传入float,返回int类型。四舍五入

继承

什么是继承?
1.多个类中存在相同的属性和内容。。。。我们可以把相同的属性和行为,存放到单独类中,多个类就不用再单独声明。。。。继承父类就可以,使用这些属性和行为了。

2.多个类称为子类:派生类。。。。。。单独类称为父类:超类,基类

3.继承描述的是事物之间的所属关系,【is-a】关系,继承关系中【子类就是一个父类】,例如【讲师就是一个员工】。【is-a】-----------【讲师是一个员工】。

4.父类更通用,子类更具体,使多种事物形成关系体系。

定义
继承就是:继承继承父类中【非私有】的属性和行为,使得子类对象与父类有相同的属性和行为,子类可以直接访问父类中【非私有的属性和行为】。继承主要解决问题就是共性【抽取效果】

优点
1.提高代码复用性
2.类与类之间可以长生一种关系,是【多态的前提】

继承格式

通过【extends】关键字可以声明一个子类继承另一个父类

public class FuClass{
    
}
public class Ziclass extends Fuclass{
    
}

代码演示

//定义一个员工类
public class Employee{
    String name;	//姓名
    int id;			//工号
    //定义一个员工工作方法
    public void work{
        System.out.println(name+"努力工作");
    }
}
//定义讲师类,继承员工类
public class Teacher extends Employee{
    //定义讲课方法
    public void teach(){
         System.out.println("教学");
    }
}

//定义一个助教类
public class Ta extends Employee{
//助教类
    
}


//定义一个测试类
public class Test{
    public static void main(String[] args){
        //创建一个讲师类
        Teacher t=new Teacher();
        //为该员工类的name属性赋值,
        t.name="小张";
        //调用该员工中的讲课方法
        t.teach();
        //调用teach中继承过来的work方法
        t.wokrk();
        //使用助教里面继承的属性和方法方法
        ta.name="如意";
        ta.work();
    }
}

解释:就是说子类对象可以使用父类里面【非私有】的属性和方法,也能给他赋值,使用的理由就是很多子类的时候不用每个子类都去写属性很方便。

继承和多态的关系
继承是多态的前提,没有继承就没有多态

继承特点---成员变量:

1.成员变量不重名: 子类和父类中成员变量不重名,访问没有影响

public class Fu{
    int num=10;
}
public class Zi extends Fu{
    int num1=20;
    
    //定义成员方法
    public void show(){
        System.out.println("父类中的参与变量:"+num);
        System.out.println("子类中的成员变量:"+num1);
    }
}

public class Test1{
      public static void main(String[] args){
	//创建子类对象
    Zi zi=new Zi();
    //调用子类方法
    zi.show();
}
}

2.如果子类和父类吹醒那重名变量,这时候访问是有影响的。父类中的成员变量依然在子类的当中

public class Fu{
    //定义父类中的成员变量
    int num=10;
}
public class Zi extends Fu{
    intn num=20;
    //定义成员方法
    public void show(){
        System.out.println("父类中的参与变量:"+num);
        System.out.println("子类中的成员变量:"+num);
    }
}

public class Test2{
      public static void main(String[] args){
	//创建子类对象
    Zi zi=new Zi();
    //调用子类方法
    zi.show();
    
}
}

备注:在父子类继承关系中,如果成员变量重名了,则创建子类对象时候访问有两种方式;

1.直接通过子类对象访问成员变量:等号左边new 的哪个类,就会优先使用那个类里面的成员变量,如果没找到就像上去父类找

2.间接通过成员方法访问成员变量,该方法属于谁就优先用谁,不会向上去父类找成员变量,没有才向上找

super关键字

如果父子类中出现了重名的成员变量,子类像访问父类中【非斯有】成员变量时需要使用 【super关键字】,修饰父类的成员变量,

使用格式:
super.父类的成员变量名;

字类方法中的代码需要修改

public class Zi extends Fu{
    intn num=20;
    //定义成员方法
    public void show(){
        System.out.println("父类中的参与变量:"+super.num);
        System.out.println("子类中的成员变量:"+num);
    }
}

备注:父类中的成员变量是非私有的,子类中可以直接访问,私有之后子类不能直接访问。遵循封装原则,使用private修饰成员变量,所以子类不能直接访问。值能借助父类提供的公共的setXxx和getXxx方法。

原文地址:https://www.cnblogs.com/tushao/p/14012860.html