super关键字的使用
super和this的区别在于,this表示当前对象,super表示父类对象
super.父类的属性 super.父类的方法
super还可以用来调用父类的构造方法: super()
在子类创建调用子类构造方法
之前会先调用父类的构造方法,子类的构造方法的第一行隐式存在一个
super(),super()无论是否带参都只能写在子类的构造方法的第一行
不能在普通方法中调用父类的构造方法,包括本类的构造方法
父子类加载顺序
1.父类的静态成员、静态代码块
2.子类的静态成员、静态代码块
3.父类的普通成员、实例代码块
4.父类的构造方法
5.子类的普通成员、实例代码块
6.子类的构造方法
重载:overload,同一个类中多个方法方法名相同,参数列表不同
与其他无关(访问修饰符,返回类型,抛出的异常等)
重写:override ,覆写。发生在父子类之间,子类重写父类的方法
要求方法名、返回类型、参数列表和父类一致,访问修饰符不能比父类
的更为严谨
重写的目的在于父类的方法不适用于所有的子类,但是子类也希望具有
该功能,但是具体的实现需要改变。在重写后子类调用的就是子类本身
重写后的方法,不再是父类中定义的方法
java中很多地方都做了重写:object类中的equals方法
abstract 抽象
抽象关键字可以用来修饰类和方法
abstract修饰的类称为抽象类,抽象类具有以下特征
1.虽然有构造方法但是无法被实例化,无法通过new 类() 创建实例
2.抽象类中可以有普通方法,还可以声明抽象方法
3.抽象类中可以声明普通变量、静态变量、常量
abstract方法
1.抽象方法只能写在抽象类和[接口]中
2.抽象方法没有具体的实现,没有方法体(也就是花括号)
3.抽象类做为父类的时候,子类必须去重写父类中定义的抽象方法
4.如果子类也是抽象类就可以不用必须重写父类的抽象方法
final关键字,终态
final可以用来修饰类、属性、方法
final修饰的类无法被继承,String类就是final的
final修饰的方法无法被重写
final修饰的属性值不可变,只能赋值一次,并且如果是全局变量被
final修饰一定要赋予初始值,如果是局部变量只能有一条赋值语句
final修饰的如果是对象,对象不能指向新的地址,但是对象内的属性
如果没被final修饰是可以正常改变的,final修饰的属性被称为
常量,常量名需要全部大写
多态 : 同一种事物的不同表现形式,重写和重载都是多态的体现之一
满足多态的规则
1.继承关系,子类继承父类
2.子类重写父类的方法
3.父类声明引用子类实例
之前声明一个对象:类 对象名 = new 类名();
多态的声明方式:父类类型 对象名 = new 子类类名();这种方式也被
称为向上转型.向上转型能够访问父类的成员以及子类重写的父类的方法
缺点是不能访问子类的成员
如果要访问子类的成员,需要再向下转型,需要强转
父类类型 父类对象 = new 子类类名();
子类类型 对象名 = (子类类型)父类对象;
结合instanceof关键字,这个关键字的用处是用来判断一个对象
是否是某个类型,返回布尔值
对象名 instanceif 类名
多态可以用在方法的参数的多态,以及返回的多态上可以提升程序的
灵活性
多态的优势有很多
1.屏蔽不同的子类实现细节
2.让类与类之间解耦
equals在没有重写之前比较两个对象的地址是否相等,重写以后按照
重写的规则进行比较