A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Animal 中级黑马   /  2015-6-1 22:17  /  292 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Random类(理解):
        构造方法:
                Random(); 以当前时间的毫秒值作为默认种子,每次产生的随机数都是不一样的。
                Random(long seed);根据给定的值作为默认种子,每次都是按照给定的种子做出初始值产生随机数,
                                                  如果种子是固定的,产生的随机数的规律都是一样的。
        成员方法:
                nextInt(); 产生一个int范围内的随机数。
                nextInt(int n);产生一个0-n之间的随机数,包左不包右。
        注意:
                开发中,我们想使用那个类,就单独导入哪个类。
                不要写java.util.*这种方式。


继承:
        概述:把多个类中的同性内容提取出来放到一个单独的类(A)中,然后让这多个类和类A产生关系,
                 这样,这个多个类就具备了类A的功能,这种技术,就叫继承。
        格式:
                class A extends B
                {
                       
                }
        叫法:
                类A:子类,派生类
                类B:父类,基类,超类,
        注意:
                子类可以直接访问父类中的所有非私有成员。

        案例:
                父类:Person
                子类:Student
                class Person
                {       
                        public void show()
                        {
                                sop("nihao");
                        }
                }
                class Student extends Person
                {
                        public void show()
                        {
                                sop("nihaoma ?");
                        }
                }
                       
                }
                class Demo
                {
                        Student s = new Student();
                        s.show();
                        Student s1 = new Student();
                }

继承使用是需要注意 的问题是?
        子类可以直接访问父类中的所有非私有成员。
子类中如果想使用父类私有的成员变量怎么办?
        1、通过父类的公共访问方式。
        2、通过调用父类的其他带参构造(了解)。

继承的好处和特点:
        好处:
                1、提高代码的复用性。
                2、让类与类之间产生一个关系,是多态的前提。
        特点:
                1、Java支持单继承,不支持多继承。
                        为什么不支持多继承?
                                假如可以多继承的话,会出现调用不明确的情况。
                2、Java支持多层继承(继承体系)。
                        类A继承类B,类B还可以继承类C,类C还可以继承。。。。

什么时候定义继承关系呢?
        当类与类之间满足 is a 的关系的时候,就可以使用继承。
        举例:
                A is a B的一种:A是子类,B是父类。
                B is a A的一种:B是子类,A是父类。
        注意:
                不要为了获取部分功能,而去使用继承。

类的组成:
        成员变量
                使用变量,遵循一个就近原则,先在局部范围找,没有就到本类的成员位置找,如果没有就到父类的成员位置找。
                如果还没有,就报错。
                在子类中,想输出本类的局部变量,成员变量,父类的成员变量值,怎么班?
                        局部变量:直接输出。
                        成员变量:this.变量名。
                        父类的成员变量:super.变量名。
                        如果他们的变量名不同,直接输出即可。
                this和super有什么区别?
                        this:代表本类对象的引用。
                        super:代表父类的内存空间标识(可以理解为父类对象的引用)。
                this和super的用法:
                        成员变量;
                                this.成员变量:本类的成员变量
                                super.成员变量:父类的成员变量
                        构造方法:
                                this(参数):本类的其他构造方法。
                                super(参数):父类的构造方法。
                        成员方法:
                                this.方法名():本类的成员方法
                                super.方法名():父类的成员方法
        成员方法
                子父类间方法的调用问题?
                        先在子类中找,如果没有,就去父类中找。
                面试题:
                        方法重载和方法重写有什么区别?
                                方法重载:同一个类中,出现方法名相同,参数列表不同的两个或多个方法时,即构造方法重载。
                                                        方法的重载与返回值的数据类型无关。
                                方法重写:子父类间,出现一模一样的方法时,被称为方法的重写,或者复写。
                                                  注意:方法重写,要求一模一样。包括返回值的数据类型。
                方法覆盖需要注意哪些问题?
                        1、父类的私有方法不能被子类重写。
                        2、子类方法的访问权限一定要大于等于父类方法的访问权限。
                        3、静态方法只能被静态方法重写。(这个不算子类间对象的成员关系)
                方法重写的应用场景:       
                        当子类需要使用父类的某个功能,并且在这个功能的主体上需要加入自己特有内容的时候,
                        就可以考虑使用方法的重写,这样,即沿袭了父类的功能,又加入了自己的功能。

        构造方法
                子父类间构造方法的执行顺序:
                        子类的所有构造方法默认都去访问了父类的无参构造,
                        原因是,子类的所有构造方法之前有一行默认的代码:super();
                为什么要这样做呢?
                        子类默认具备了父类的非私有数据,而父类的数据的初始化是靠父类自己来完成的。
                        所以在子类的构造方法执行前,需要先执行父类的构造方法对父类数据进行初始化。
                如果父类没有无参构造怎么办?
                        1、通过super(参数)的形式来调用,父类的其他带参构造。
                        2、通过this(参数)的形式来调用本类的其他带参构造。
        一个关于代码块的面试题:
                父类的构造方法,子类的构造方法
                父类的构造代码块,子类的构造代码块
                父类的静态代码块,子类的静态代码块。
                如果子父类都有静态代码块,构造代码块,构造方法,那么他们之间的执行顺序是什么?
                        父类的静态代码块  -- 》子类的静态代码块 --》 父类的构造代码块 --》父类的构造方法
                        --》 子类的构造代码块 --》子类的构造方法
                        注意:
                                静态代码块只加载一次(.class字节码文件只加载一次的情况下)。
        子父类间的关系:

final关键字:
        概述:它是一个关键字,表示最终的意思,它可以修饰类,成员变量,成员方法。
        它修饰的类,不能被继承,但是可以继承其他类。
        它修饰的成员变量,其实是一个常量。
                常量的分类:
                        字面值常量; 123,32,"Hello"
                        自定义常量:格式跟咱们定义变量一样,加一个final即可。
                                final int A = 10;
                                被final修饰的成员变量没有赋值,那么该变量一旦被赋值
                                就是一个常量,不可被更改;   final String name;
                               
                        它修饰的成员方法,不能被子类重写。
       
               
        中午:
                思考题:
                        1、父类的私有方法能被重写吗?
                        2、子父类间,方法的权限问题。private public
                        3、父类的静态方法能被子类的非静态方法重写吗?

                        4、把上午的案例写一下。


1 个回复

正序浏览
赞!一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马