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修饰引用数据类型,指的是修饰的引用的指向不在发生改变。(创建对象是地址值不发生改变)
|
|