java基础总结

重载(Overloading)

1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。
2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具
有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型
来决定具体使用哪个方法, 这就是多态性。
3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
重写(Overriding)
1)父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某
方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,
则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键 字引用了当前类的父类。
3)子类函数的访问修饰权限不能少于父类的;

值传递(形式参数类型是基本数据类型)

方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值

引用传递(形式参数类型是引用数据类型参数):

也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数

接口

接口是一种比抽象类更加抽象的“类”。这里给“类”加引号是我找不到更好的词来表示,但是我们要明确一点就是,接口本身就不是类,从我们不能实例化一个接口就可以看出。如new Runnable();肯定是错误的,我们只能new它的实现类。

抽象类

在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类。

抽象类通常代表一个抽象概念,他提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的。所以,在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。

继承

就是扩展已有类的功能,在继承中分为子类和父类,父类有时候也称为超类(super class,子类有时候称为派生类。

继承的基本语法为:class子类 extends 父类 {}

继承的限制:1)在Java中不允许多重继承,一个子类只能继承一个父类,不能继承多个父类;2java中允许多层继承;3)在继承中子类不能访问父类中的私有成员,只能继承公共操作。但是私有成员可以通过公共方法得到访问。

实现

类实现接口,本质上与类继承类相似,区别在于“类最多只能继承一个类,即单继承,而一个类却可以同时实现多个接口”,多个接口用逗号隔开即可。实现类需要覆盖所有接口中的所有抽象方法,否则该类也必须声明为抽象类。

二、接口是否可继承接口?

接口是可以继承接口的。比如在项目中需要N个接口,他们都要实现一些常用的功能,这样你就可以只写一个接口,然后让你的其他接口都这个接口。通常IBaseDao就是这样的。定义一个泛型接口,然后让其他接口去继承它并定义各自的泛型类,这样就方便很多。

三、抽象类是否可实现(implements)接口?

抽象类可以实现接口

四、抽象类是否可继承实体类(concrete class)

抽象类可以继承实体类,但前提是实体类必须有明确的构造函数。答案很明确,可以继承。其实从Object就是个实体类,javaAPI文档里,每个抽象类的条目里都明确写着直接或间接继承自Object

所有的class都必须有一个构造方法,如果你没有在代码里声明构造方法,系统会自动给你生成一个公有无参的构造方法。而只要你自己声明了一个构造方法,无论有参无参,私有公有,系统就不再帮你生成默认无参构造器了。

所有的子类构造器都要求在第一行代码中调用父类构造器,如果不写,系统默认去调用父类的无参构造器。

多态

 面向对象编程有三大特性:封装、继承、多态。

      封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。

      继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开:

      所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

      比如你是一个酒神,对酒情有独钟。某日回家发现桌上有几个杯子里面都装了白酒,从外面看我们是不可能知道这是些什么酒,只有喝了之后才能够猜出来是何种酒。你一喝,这是剑南春、再喝这是五粮液、再喝这是酒鬼酒….

JSP九大隐式对象:
request HttpServletRequest
response HttpServletResponse
session HttpSession
application ServletcContext
config ServletConfig
exception (特殊情况下使用)
page this(本JSP页面)
out JspWriter(带缓冲的PrintWriter)
pageContext (使普通Java类可访问WEB资源,自定义 标签常用)
4个域对象:
pageContext(称之为page域)
request(称之为request域)
session(称之为session域)

servletContext(称之为application域

冒泡排序

package 冒泡排序;

import java.util.Arrays;

/**

 * 冒泡排序

 * @author mmz

 */

public class BubbleSort {

    public static void BubbleSort(int[] arr) {

        int temp;//定义一个临时变量

        for(int i=0;i<arr.length-1;i++){//冒泡趟数

            for(int j=0;j<arr.length-i-1;j++){

                if(arr[j+1]<arr[j]){

                    temp = arr[j];

                    arr[j] = arr[j+1];

                    arr[j+1] = temp;

                }

            }

        }

    }

    public static void main(String[] args) {

        int arr[] = new int[]{1,6,2,2,5};

        BubbleSort.BubbleSort(arr);

        System.out.println(Arrays.toString(arr));

    }

}

 

 

原文地址:https://www.cnblogs.com/baibin-520/p/10464455.html