怎么调用父类构造方法的?
子类构造方法的第一行语句默认都是:super(),不写也存在,且必须在第一行。
如果想调用父类有参构造,必须手写super进行调用。
继承中构造方法的访问特点是什么?
1.子类不能继承父类的构造方法,但是可以通过super调用。
2.子类构造方法的第一行,有一个默认的super();
3.默认先访问父类中无参的构造方法,再执行自己。
4.如果想要方法文父类有参构造,必须手写书写。
this,super使用总结
this
理解为一个变量,表示当前方法调用者的地址值。
super
代表父类存储空间
多态
什么是多态
对象的多种形态。
多态的前提
1.有继承/实现关系
2.有父类引用指向子类对象
3.有方法的重写
多态的好处
1.使用父类型作为参数,可以接受所有子类对象,体现多态的扩展性与便利。
2.体现多态的扩展性与便利。
多态调用成员的特点
变量调用:编译看左边,运行也看左边。
方法调用:编译看左边,运行看右边。
多态的优势
在多态形式下,右边对象可以实现解耦合,便于扩展和维护。
定义方法的时候,使用父类型作为参数,可以接受所有子类对象,体现多态的扩展性与便利。
插入一个总结
1.多态的优势
方法中,使用父类型作为参数,可以接收所有子类对象。
多态的弊端是什么?
不能使用子类的特有功能
引用数据类型的类型转换,有几种方式?
自动类型转换。强制类型转换。
强制类型转换能解决什么问题?
可以转换成真正的子类类型,从而调用子类独有功能。
转换类型与真是对象的类型不一致会报错。
转换的时候用instanceof关键字进行判断
包
什么是包?
包就是文件夹。用来管理各种不同功能的Java类,方便后期代码维护。
包名的规则
公司域名反写+包的作用,需要全部英文小写,见名知意。例如:com.itheima.domain
使用其他类的规则
使用其他类的规则
1.使用同一个包中的类时,不需要导包。 2.使用java.lang包中的类时,不需要导包。 3.其他情况都需要导包 4.如果同时需要两个包中的同名类,需要用全类名。
包的总结(插入)
1.包的作用?
包就是文件夹,用来管理各位不同功能的Java类
2.包名书写的规则?
公司域名反写+包的作用,需要全部英文小写,见名知意
3.什么是全类名?
包名+类名
4.什么时候需要导包?什么时候不需要导包?
使用同一个包中的类时,不需要导包。
使用Java.lang包中的类时,不需要导包。
其他情况都需要导包。
如果同时使用两个包中的同类名,需要使用全类名。
final
final修饰方法;
表示该方法是最终方法,不能被重写。
final修饰类:
表明该类是最终类,不能被继承
final修饰变量
叫做常量,只能被赋值一次。
权限修饰符
权限修饰符:是用来控制一个成员变量能够被访问的范围的。
可以修饰成员变量,方法,构造方法,内部类。
权限修饰符分类
权限修饰符的使用规则
实际开发中,一般只用private和public
成员变量私有
方法公开
特例:如果方法中的代码是抽取其他方法中共性的代码,这个方法一般也私有。
代码块
局部代码块 构造代码块 静态代码块
局部代码块
构造代码块
静态代码块(重点)
格式:static{}
特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发,只执行一次。
使用场景:在类加载的时候,做一些数据初始化的时候使用。
封装
对象代表什么,就得封装对应的数据,并提供数据对应的行为。
抽象方法
将共性的行为抽取到父类之后, 由于每一个子类执行的内容是不一样的, 所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。
抽象类
如果一个类中存在抽象方法,那么该类就必须声明为抽象类
抽象类和抽象方法的定义格式:
抽象方法的定义格式: public abstract 返回值类型 方法名(参数列表); 抽象类的定义格式: public abstract class 类名{}
抽象类和抽象方法的注意事项
抽象类不能实例化
抽象类中不一定有抽象方法,由抽象方法的类一定就是抽象类
可以有构造方法
抽象类的子类 要么重写抽象类中所有抽象方法 要么是抽象类
总结
1.抽象类的作用是什么样的?抽取共性时,无法确定方法体,就把方法定义为抽象的。强制让子类按照某种格式重写。抽象方法所在的类,必须是抽象类。
2.抽象类和抽象方法的格式?public abstract返回值类型方法名(参数列表);public abstract class 类名{}
3.继承抽象类有哪些要注意?要么重写抽象类中的所有抽象方法要么是抽象类