记javase基础的学习总结

关于封装:

封装就是将抽象的属性和行为结合起来,形成一个有机的整体,也就是类。
 类里面的一些属性和方法(尤其是属性)需要隐藏起来,不希望直接对外公开,但同时提供供外部访问的方法来访问这些需要隐藏的属性和方法。
 *封装是面向对象的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
 *封装是把过程和数据包围起来,对数据的访问只能通过已定义的方法。
 *封装就是控制用户对类的修改和访问数据的程度。
 *封装的目的:
增强安全性和简化编程,使用者不必了解具体类的内部实现细节,而只是要通过提供给外部访问的方法来有限制地访问类需要隐藏的属性和方法。
 *良好的封装:
就是使用private对属性进行封装,从而保护信息的安全。

 *使用public修饰方法时,外界可以调用该方法,通常将设置私有属性的值和获取私有属性值的方法称为setter和getter方法。

关于重载:

重载的定义:在同一个类中,可以有两个或两个以上的方法具有相同的方法名,但他们的参数列表不同,该情况下的方法就被称为重载(overload)。
其参数列表包括以下三种情形:
-参数的数量不同;
-参数的类型不同;
-参数的顺序不同。
必须注意,仅返回值不同的方法不叫重载方法。

举例说明:一个类可以定义多个构造方法的时候,就已经对构造方法进行了重载。

访问控制符:

Java语言中的访问权限修饰符有4种,但却只有3个关键字。因为不写访问权限修饰符时,在Java中被称为默认权限(包权限),
 其他3个访问权限修饰符分别为private、protected和public:
-私有权限private可以修饰属性、构造方法、普通方法(被private修饰的类成员只能在定义它们的类中使用,在其他类中不能访问);
-属性、构造方法、普通方法都使用默认权限,即不写任何关键字(默认权限也称为同包权限-同包权限的元素只能在定义它们的类中以及同包的类中被调用);
-受保护权限protected可修饰属性、构造方法、普通方法(能在定义它们的类中以及同包的类中调用被protected修饰的成员);
*如果有不同包中的类想要调用它们,那么这个类必须是这些成员所属类的子类。
-公共权限public可以修饰属性、构造方法和普通方法(被public修饰的成员,可以在任何一个类中被调用,是权限最大的访问权限修饰符);
*能修饰类的访问权限修饰符只有public和default,如果使用public修饰,则表示该类在任何地方都能被访问,如果不写访问权限修饰符,则该类只能在本包中使用。
*了解为什么需要使用访问控制修饰符?
-一个商业的Java应用系统有很多类,其中有些类并不希望被其他类使用。每个类中都有属性和方法,但并不是所有的属性和方法都允许被其他类调用,这时就需要使用访问修饰符来控制访问权限。
*信息隐藏式OOP最重要的功能之一,也是使用访问修饰符的原因。
*访问权限修饰符的使用范围:
-private:类内部;
-default:类内部、同一个包中;
-protected:类内部、同一个包中、子类;

-public:类内部、同一个包中、子类、任何地方。


静态:

static是静态的意思;
 static可以声明:
-用static修饰类的成员变量:修饰的成员变量是静态变量,对该类的所有实例来说,只有一个静态值存在,所有实例共用一个变量;
*(静态变量是指不管类实例化处多少个对象,系统仅在第一次调用该类的时候为静态变量分配内存)。
-用static修饰类的代码块/初始化块:被执行且只执行一次;
-用static修饰类的成员方法:被修饰的成员方法,被绑定于该类本身,而不是类的实例(在方法区分配内存,并不是被执行,所有方法都需要调用才能执行)。
 *用static修饰的成员变量、代码块/初始化块、方法时在类首次被装载的时候被初始化。
 *(静态方法可以操作静态变量,不能操作实例变量(非静态变量))。
 *(静态方法总是使用类名直接调用(类名.静态方法名();),在静态方法(类方法)中不能使用this关键字)。
 *静态和非静态的分类:
-变量的分类:
静态变量(类变量):变量值被所有该类的对象共享;
非静态变量(实例变量):变量值只属于单个对象。
-方法的分类:
静态方法(类方法):此种方法被所有该类的对象共享;
非静态方法(实例方法):此种方法对所有该类的对象都是独立的。
-代码块:
静态代码块:static{代码......}//属于类,该类被第一次使用时执行一次
非静态代码块:{代码......}//属于对象,没创建一个对象都会执行一次
 *static的作用:
作为程序员,有时需要定义一个类级别的变量,它的使用完全独立于该类的任何对象,可以直接通过"类名.变量名"的形式进行访问;

即如果想让通过此类创建的对象共享一个属性就用static修饰需要共享的属性。


java的工作原理:

用Java编写的程序(.java后缀)经过编译器编译成字节码文件,这个字节码文件不是针对具体平台的,而是针对抽象的Java虚拟机的,在Java虚拟机上运行。
 而在不同的平台上,会安装不同的Java虚拟机,这些不同的Java虚拟机屏蔽了各个不同平台的差异,从而使Java程序(字节码文件)具有平台无关性。
 也就是,Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
 *(一个类模板只被装载一次,通过该模板创建N个对象)。
 *类装载器:
其主要功能是为执行程序寻找和装载所需要的类,就是把字节码文件装到Java虚拟机中;
 *字节码校验器:
其功能是对字节码文件进行校验,保证代码的安全性。字节码校验器负者测试代码段格式并进行规则检查,检查伪造指针、违反对象访问权限或试图改变对象类型的非法代码;
 *解释器:

具体的平台并不认识字节码文件,最终起作用的还是这个最重要的解释器,它将字节码文件翻译成所在平台能识别的东西。


继承多态:

继承:使用已存在的类作为基础建立新类的技术,新类的定义可以增加新的属性或新的方法,也可以用父类的属性和方法。
*属性和方法存在重复定义;
*私有的属性和方法不能被继承;
*方法的重写:方法名、参数、返回类型都要一致    范文修饰符:可大不可小;
*子类可以在父类的基础上额外增加新的数据和行为;
*类型上存在一定的联系,为编码提供一定的灵活性;
*子类是不是能继承父类所有的属性和方法呢:
-子类可以继承父类中访问权限修饰符为public和protected的属性和方法;
-子类可以继承父类中默认访问权限修饰的属性和方法,但子类和父类必须在同一个包中;
-子类无法继承父类中访问权限修饰符为private的属性和方法;
-子类无法继承父类的构造方法;
*重写:子类会从父类继承方法,有时,从父类继承的方法在子类中非常有必要被修改来适应新类的需要;
*重写需要满足的条件:
-重写方法与被重写方法方法名相同,参数列表也必须相同;
-重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类;
-重写方法不能缩小被重写方法的访问权限;
-静态方法可以被继承,但却不能被重写;
-final关键字修饰的方法不能被重写;
-运行时属性的值取决于类型即编译时类型;
-在继承关系中子类无法覆盖父类的属性。
*继承层次结构中的类初始化步骤(类的加载过程):
-第一次实例化子类时,先调用父类的静态信息(静态属性和静态代码块)且只调用一次;
-调用子类的静态信息(静态属性和静态代码块)且只调用一次;
-调用父类的非静态属性、非静态块和构造方法;
-调用子类的非静态属性、非静态块和构造方法。
*多态性:指子类对象可以直接赋值给父类变量;
当使用父类变量调用自己的方法时依然表现出子类的特征。
*父类的引用指向子类的对象
Father p = new Children();
p.method();//子类的方法
-要有继承;
-要有方法重写;
-父类引用指向子类对象。
继承的好处:
继承技术使得复用以前的代码非常的容易,能够大大缩减开发周期,降低开发费用。
继承的语法:
class A extends B{
//类定义部分
}
super关键字:
-调用父类构造方法且只在子类的构造中使用:super([参数列表]);
-调用父类的其他方法:super.父类方法([参数列表]);

-访问父类的属性:super.属性。





你可能感兴趣的:(java)