经典笔试题

目录

一、面向对象的程序设计:

二、面向对象的落地法则:

三、类的成员之属性

四、类的成员之方法

五、对象的生命周期

六、类的第三个成员:构造器(构造方法) Constructor

七、面向对象的特征一:封装

八、this关键字:

九、再讲方法的参数传递

十、static关键字:静态的,修饰属性、方法、代码块、内部类

一、面向对象的程序设计:


    1.面向对象的设计其实是类的设计
    2.设计类其实是设计类的成员
    3.类的成员:成员变量&成员方法
    扩展:类的成员共有五个:成员变量、成员方法、构造器、代码块、内部类


二、面向对象的落地法则:


    1.设计类并设计类的成员
    2.通过类来创建对象,注意是用new关键字
    3.通过对象名.变量,对象名.方法的形式来完成对象的使用,例如:a1.name;a1.info()
    4.使用类创建了对象,该对象就拿到了该类所设计的一个“副本”,
    对其中一个对象的属性赋值,不会影响其他对象的该属性的值。


三、类的成员之属性


    属性:就是类中的成员变量
    成员变量VS局部变量
    共同点:1.都是变量,他们的定义形式相同:类型 变量名 = 初始化值;
           2.都有作用域:作用域是在一对大括号内
    不同点:1.内存中存放的位置不同:
            成员变量存放在堆空间内
            局部变量存放在栈空间内
        2.声明的位置不同(作用域不同):
            成员变量声明在类的内部,方法的外部;
            局部变量声明在方法的内部。
        3.初始化值不同
            成员变量可以不赋初值,其默认值按照其数据类型来定
            局部变量必须显式地赋初值
        4.权限修饰符不同
            成员变量的权限修饰符有四个:public (default) protected private
            局部变量没有权限修饰符,其访问权限依据其所在的方法而定(与方法的访问权限相同)


四、类的成员之方法


    1.实例:
        void setName(String n){
            name = n;
        }
        String getName(){
            return name;
        }
        void eat(){
            //System.out.println("动物进食");
        }
        
    2.格式:修饰符 返回值类型 方法名(形参列表){方法体}
        2.1 返回值类型:若方法有返回值,则返回值类型是该返回的值的数据类型;若没有则是void
        2.2 形参列表:调用方法时实参传递给形参的“值”,当传递的是基本数据类型时,该“值”是具体的数值;当传递的是引用数据类型时,该“值”是引用数据类型变量的首地址值。
    3.注意:方法内可以调用其他方法,但是方法内不能定义新的方法


五、对象的生命周期


    1.对象一旦被创建,其生命周期就开始了
    2.对象生命周期的结束:一旦对象所在的堆空间的区域没有被任何变量所引用,则意味着对象的生命周期结束了。


六、类的第三个成员:构造器(构造方法) Constructor


    1.构造器的作用:
        1)创建对象 “new 构造器”==》开辟了空间,创建了对象
        2)给创建的对象的属性赋值等一些列初始化操作。
    2.构造器的声明的格式:权限修饰符    类名(形参列表){},注意:构造器没有返回值类型,也就是没有返回值
    3.如果类中没有显式地声明一个构造器,则系统会默认提供一个空参的构造器;
      如果类中显式地声明了一个构造器(无论是否是空参),则系统不再提供空参的构造器。
    4.一个类中可以有多个构造器。多个构造器之间构成了构造器的重载。


七、面向对象的特征一:封装


    1.出现的场景:当我们直接通过对象.属性的方式给对象的属性赋值时,有可能会出现不满足实际情况(自然规律或特定条件)的意外。那么我们考虑将赋值的操作不通过直接给属性赋值来完成,而是通过方法来完成,将条件体现在方法里,以达到满足实际情况的要求。
    2.解决不能直接作用于属性的办法:封装——通过private关键字来实现
private关键字:被private关键字修饰的属性和方法,表示该属性和方法只能在本类中被访问。出了本类就无法访问。注意:在实际使用中,往往将属性私有化,再提供公共的方法访问这些私有化的属性。


八、this关键字:


    1.可以用来修饰属性、方法、构造器
    2.this理解为当前的对象(或当前正在创建的对象)
        比如this.name,this.eat(),表示当前对象的name,当前对象的eat()
    3.this可以用来调用构造器,通过“this(形参列表)”显式地调用本类中其他的构造器。
    注意:
        1)在构造器中通过this来调用其他构造器,则该this必须声明在首行;
        2)如果一个类中有n个构造器,则最多只能有n-1个this()构造器调用语句。


九、再讲方法的参数传递


    Java里方法的参数传递方式只有一种:值传递。即将实际参数值的副本(复制品)传入方法内,
    而参数本身不受影响,如果参数本身是地址值,则该地址值所指向的空间的内容被影响。


十、static关键字:静态的,修饰属性、方法、代码块、内部类


    一、static修饰属性(静态的属性也称为类变量):
    1.由类创建的所有的对象都共用该属性
    2.当其中一个对象对其属性进行更改,会导致其他对象的该属性的值的变化。
    类变量vs实例变量:
    实例变量:非static修饰的变量,每个实例(对象)各自拥有一套副本
    访问实例变量得通过“对象.属性”的形式访问,而不能通过“类名.实例变量”的形式访问。
3.类变量随着类的加载而加载,加载到静态域里,而且在内存中独一份。
    4.可以通过“类名.类变量”的方式直接访问,因为这种方式“类名.类变量”意味着先加载类,再访问类变量。
    5.类变量的加载是早于实例变量的,因此也可以通过对象.类变量的形式来访问类变量
    6.类变量存在于静态域中。
二、static修饰方式(静态的方法也称为类方法)
    1.类方法是随着类的加载而加载,在内存中也是独一份
    2.可以通过“类.类方法”的形式调用,也可以通过“对象.类方法”来调用,因为类方法的生命周期早于对象,类方法被回收晚于对象被回收。
    3.类方法内不能使用实例变量(即非static修饰的成员变量)
    4.类方法内只能出现类变量,同理类变量可以被非static修饰的方法调用。
    5.类方法里能否出现this、super关键字?不能
三、static修饰代码块:静态代码块(随着类的加载而加载)
    1.代码块:由大括号组成的一个单位,该单位内可以包含多条语句。
        1)静态代码块:被static修饰的代码块
        2)构造代码块:是声明在方法的外部,类的内部
        3)普通代码块:声明在方法的内部
    2.加载顺序:
        静态代码块>main>构造代码块>构造器>普通代码块


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值