1.继承的关键字
extends 继承 子类在前 父类在后 一个子类只能有一个父类
注意:子类可以无偿访问父类的属性以及方法但是父类访问不了子类任何的成员和方法 公有的也不行
2.方法的重写
语法规则
1.方法的名称相同 2.方法的参数列表相同 3.方法参数顺序,个数,类型相同 4.方法返回值相同
2.的重写必须在子类当中 子类重写父类的方法
3.与方法的参数名无关.(也就是说重写可以方法的参数不一样)。
4.访问修饰符,访问修饰符需要大于等于父类的访问范围。(访问修饰符权限参考以下)
父类的方法
子类重写父类的方法
注意:当子类重写过父类的方法是 用子类的对象去调用重写过后的方法时,调用的是重写过后的方法,不再是父类的方法。同样的道理也适合于属性.举例:
父类:int temp=100;
子类int temp=300;
如果子类继承了父类 在用子类对象调用temp 的时候会是调用的子类的 temp 输出结果会是300。
3.访问修饰符的分类以及作用
1.公有的:public 2.私有的:private 3.受保护的:protectde 4.默认
1.public: 允许在任意类中去访问。
2.private :之允许在本类当中访问,如果超越类是不可以直接去访问的。
3.protectde: 允许在当前类 ,允许被子类继承 ,允许跨包子类调用 ,跨包非子类是不允许调用的,同包的情况下任意类都可以去访问
4.默认 什么访问修饰符都不加的 :允许在当前类, 不允许跨包子类访问,同包子类允许调用,允许同包下任意类访问.跨包不允许被访问.
排名:public >protectde>默认>private 。1.public 2.protectde 3.默认 4.private
4.super关键字的使用
super代表父类的引用 ,我们可以通过super 调用到父类的成员方法 以及属性
父类的构造方法不可以被重写,也不可以被继承。
继承的初始化顺序看一下代码的输出结果和注释:
也就是说在继承了父类之后 类加载的时候会优先寻找父类。
子类继承父类 在调用构造方法的时候会先加载父类的构造方法 如果没有指定 ;会默认的调用父类的无参构造方法如果想要去调用父类的构造方法需要用super()的方式去调用 注意:如果是需要调用父类的带参构造方法 必须要在子类的构造方法中去使用super() 看代码:
子类的构造过程中必须调用其父类的构造方法.
注意:构造方法的调用只能放在构造方法中。在构造方法中 this 和super 不可以放到一块.
5. object类
object类中的 equals
equals 可以用于比较 equalse 可以用于两种比较 String 和用对象直接调用
当我直接继承objectd中的equals的时候 比较的是两个引用是否指向同一个对象
String 自己重写了object的方法 这个只是比较的字符串的结果时候一致。
object中的toString方法. toString() 当我们去输出对象名的时候 默认直接调用toString()方法.当然也可以直接去重写toString方法
final 关键字的使用
final 可以用于在class 前面 如果class前面加上final 表示此类不可以被继承 。 final跟public 没有固定的书写位置可以写在public 前面或者后面
final class:表示该类没有子类,不可以被继承。 final加在方法返回值前面的时候 表示此类不可以被子类重写;但是可以被继承者正常使用使用。
final也可以修饰变量 final 方法局部变量 可以在数据类型前面加final 这样表示属性不可以被修改了。
当final修饰类成员属性的时候 复制过程只有三种 1.定义的时候直接初始化 2.构造方法 3.构造代码块
注意:如果使用final修饰成员属性 你在上面三种方式当中都没有初始化的时候 编译器会报错.
总结:
//final修饰变量表示不允许被修改.
//方法内部的局部变量 在使用之前被初始化赋值即可
// 引用类型的变量 :初始化之后不能在指向另一个对象 ,但是对象的内容可以被改变.
// 基本数据类型的变量 :初始化之后不能更改
// 类中的成员变量 只能在定义中 ,构造方法中 ,构造代码块中初始化
final 也可以配合static使用 表示全局的 不可以被修订的内容
注解@override
override可以声明在包-类-属性-方法-局部变量-方法参数等的前面,用来对这些元素进行说明注释.
1.@override 加到类上面表示给此加上一个标签 :表示他是一个重写父类的一个方法.