• 05.Java面向对象


    一.面向对象基本概念

    面向对象的特征

    • 封装

    封装是指利用抽象数据类型将数据(属性)和对数据的操作(方法)包装起来,把对象的属性和动作结合成一个独立的单位,并尽可能隐蔽对象的内部处理细节。

    • 继承

    一个类拥有另一个类的所有属性和行为时,就称为继承。被继承类为父类,继承类为子类。

    • 多态

    通过子类对父类方法的重写实现多态

    同一类中同名方法实现多态(重载方法需定义不同参数列表)

    二.类的定义

    Java类逻辑结构

    在Java语言中,有一个顶层的类Object,它是Java中所有类的父类,在Java中称为基类

    访问修饰控制符

    类型 private 无或者(friendly) protected public
    同一类
    同一包中子类
    同一包中非子类
    不同包中子类
    不同包中非子类

    每个源文件只能有一个public类,且类名也是源文件名。

    一个源文件可以不含有公有类,此时文件名可以任取。

    类的定义

    [public][abstract | final] class Name[extends SuperName][implements InterfaceNameList]{
    	//成员变量的声明
    	//成员方法的定义
    }
    
    abstract//抽象类说明符。抽象类不能直接生成对象
    final//终级类说明符。终级类不能被继承
    

    成员变量

    [public | private | protected][static][final][transient][volatile] DataType variableName[  = initializationValue]
     
    final//声明一个终极变量(即常量)
    static//声明一个静态变量(类变量)
    transient//声明一个暂时性变量,提示Java虚拟机忽略保存
    volatile//异步保护,维护变量在并发进程的前后一致性
    

    三.方法

    方法的定义

    [public | private | protected][abstract]|[final][static][native][synchronized] returnDataType | void methodName(parametersList) throws exceptionList{
    	//方法内变量
        //方法内主体代码
    }
    native//本地化
    synchronized//同步
    throws exceptionList//定义方法抛出的异常对象的列表
    

    四.对象

    对象的定义

    className ObjectName = new className(parameter);
    

    匿名对象

    new className(parameter)
    

    对象的引用

    引用是一个地址,指明了对象的的变量和方法的储存位置。当把一个对象赋值给一个对象变量或者作为方法的参数时,使用的并不是对象本身,也不是它的拷贝,而是它的地址。

    Student stu1 = new Student();
    Student stu2 = stu1;
    //stu2和stu1引用同样的对象,stu2不是stu1的拷贝,stu2并没有分配内存空间
    

    五.实例成员和类成员

    实例成员

    实例成员是指在访问成员变量和成员方法时,需要通过new创建一个实例对象,然后通过" . "操作符去引用类的成员

    实例成员不用static修饰

    类成员

    • 类变量

    用static修饰的变量

    • 类方法

    我们知道,不管是类方法与实例方法,都是以代码块的方式存在,当类的字节码文件加载到内存时,它们在内存中均只有一个备份。但类方法与实例方法不相同的是:

    (1)对类的实例方法, 当类加载到内存时,不分配人口地址。当该类创建对象后,类中的实例方法才会被分配人口地址,从而实例方法可以被类创建的任何对象调用执行,这个人口地址也是被所有对象共享的。

    (2)对类的类方法,在该类被加载到内存时,就分配了相应的人口地址,当然这个地址在整个类中也是共享的,从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。

    那么Java应用程序类中的main( )方法为什么必须声明为static呢?这是因为只有类方法,当类加载到内存后就可以获得该方法的人口地址,从而可以由Java虚拟机调用执行,成为整个应用程序的执行人口。如果把main( )方法声明为实例方法,这个main( )方法就无法在类加载到内存时被Java虚拟机直接调用。

    初始化器

    初始化器是一段不在方法之内的程序代码,这段代码用{ }包围起来。

    实例初始化器:无修饰符static,在对象生成时初始化变量(一般不会使用,没有实际意义)

    静态初始化器:有修饰符static,在被类加载入内存时只执行一次.

    public class Demo {
        // constructor             构造函数
        public Demo() {
            System.out.println("constructor");
        }
        // static initializer     静态初始化器
        static {
            System.out.println("static");
        }
        public static void main(String[] args) {
            new Demo();
        }
    }
    //输出
    static
    constructor
    

    实例代码的初始化在构造方法中完成,类变量的初始化应在静态初始化器中完成,使代码更容易维护和阅读。

    六.命令行参数

    命令行参数使用格式

    //格式一
    Java className parameter1 parameter2 parameter3
    //格式二(当参数中包含空格时)
    Java className "parameter1" "parameter2" "parameter3"
    //混合使用(包含空格参数用双引号括起来,没空格不必括起来)
    Java className "this is" "a command" "line parameter"
    

    命令行参数的接收

    public static void main(String [] args)
    
  • 相关阅读:
    实现图片旋转木马3D浏览效果
    !important的用法
    css中!important的作用
    js深拷贝和浅拷贝
    Javascript 数组循环遍历之forEach
    javascript高级选择器querySelector和querySelectorAll
    CSS3系列教程:HSL 和HSL
    linux 静态库、共享库
    UNIX网络编程之旅-配置unp.h头文件环境
    apue2e unp安装
  • 原文地址:https://www.cnblogs.com/1911087165zzx/p/13121464.html
Copyright © 2020-2023  润新知