黑马程序员技术交流社区

标题: 今日总结 [打印本页]

作者: 双元王志超    时间: 2015-7-13 21:25
标题: 今日总结
1.Random类
        nextInt()--返回int范围内的随机数
        nextInt(int n)--返回0---n的一个随机数

2.继承
        概念(理解):把多个类中相同的内容抽取出来单独定义到一个类中(父类)
             在定义其他类的时候,继承父类即可,子类就可以拥有父类所有的非私有的属性和行为。

        class 子类  extends  父类{}

           叫法:
                Person:父类,基类,超类。       
                Student:子类,派生类。

继承好处(掌):
         提高代码的复用性,降低代码的重复率
         让类与类之间产生一个关系,是多态的前提。
       
继承特点(掌):
        java继承只支持单继承,目的为了避免调用的不明确性。       
       
        java支持多层(重)继承,[A继承B,B继承C。。。。]       

什么时候定义继承(理解):
        继承体现的是is a的关系(有is a的关系就存在继承关系)。 xxx is yyy的一种。

  注意:不要为了使用部分功能而采用继承关系。

       
3.子父类间成员变量的使用:
     子类访问父类成员变量: 局部--》成员---》父类---》报错。
       

4.this和super区别(掌):
        this 代表当前运行类的对象的引用
        super代表父类内存空间的标识(可以理解为父类对象的引用)

        应用:
                成员变量  
                        this.变量名---本类成员变量
                        super.变量--使用父类的变量

                构造方法:
                        this(参数)--调用本类其他的构造方法。
                        super(参数)--调用父类构造方法。
                        ---都是通过参数进行匹配。
                        注意:this和super必须放在第一行,不能一起使用。
                成员方法:
                        this.方法名()---本类方法
                        super.方法名()--父类的方法。

5.成员方法:
        子父类的成员方法调用? 先找子类,在找父类。
                子类中出现于父类一模一样的方法时,会出现覆盖操作,也称为重写或复写。

        面试题:方法重载与方法重写的区别?

        重写:子父类之间,方法完全一致(返回值类型,方法名,参数列表)的情况,称为方法的重写。

        重载:在一个类中,方法名完全一致,参数列表不同(个数,类型,顺序),与返回值无关。

6.方法的重写注意问题(重):

        1.父类的私有方法不能被重写。
        2.子类重写父类的方法,必须大于等于父类的访问权限。
        3.静态方法只能被静态方法重写(这其实不算是对象的关系。)
        4.覆盖应用:  
                当子类需要父类的功能,而功能主体子类又有自己特有的内容时,
                可以复写父类中的方法,这样,即沿袭了父类的功能,有定义了子类特有的内容。

7.继承中的构造方法执行顺序:
       
        继承中的构造关系:
                子类的构造方法默认都去访问了父类的无参构造方法:
                在子类中的构造方法中都有一行默认语句:super();
                目的是为了初始化父类的成员,供子类使用。

        为什么要这样呢?
                因为子类会自动具备父类中非私有的数据,那么,这个数据的初始化靠父类完成,
                所以,会去先调用父类的构造方法对数据进行初始化。
        注意:如果父类中没有无参构造方法,那么,该怎么办?
                A:可以通过super(参数)去访问父类中的带参的构造方法。
                B:可以通过this(参数。。。)去访问本类中的其他构造方法,
                想调用的这个构造必须最终调用父类的带参构造,不推荐使用。

        思考:构造方法是否有重写关系?  
                没有。重写必须建立在继承的关系上。(构造方法不被类继承)
                只不过子类创建对象的时候调用了父类的构造方法,
                去初始化父类的成员,构造方法存在重载关系。

8.子父类间代码块执行顺序(理解):(注意:静态代码块只执行一次!)

    父类静态代码块---》子类静态代码块---》父类构造代码块---》父类构造方法---》子类构造代码块---》子类构造方法。

     特点:静态代码块随着类的加载而加载,但是只执行一次。

           构造代码块,在构造方法的执行前会执行。

9.任何类都直接或间接继承Object。

10.子类访问父类私有成员的方法:

        通过父类提供的set和get方法。
        子类通过调用父类的带参构造。(无参,带参最好一起创建。)

        (如果父类成员变量被私有化了,那么,在子类中怎么使用?
        A:子类通过父类的set方法可以给父类的成员变量赋值。
        B:通过子类调用父类的带参构造方法。)

11.final关键字(掌)
        最终的意思。
        可以修饰类,修饰成员变量,修饰成员方法。
        它修饰的成员方法,是不可以被子类重写的。
        它修饰的成员变量,其实是一个常量。
                常量:
                        字面值常量:'a',"hello",123
                        定义常量:和定义变量的格式一致,不过,加了final修饰。
                               
        它修饰的类,不能被继承。

注意:final修饰引用数据类型,指的是修饰的引用的指向不在发生改变。(创建对象是地址值不发生改变)





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2