面相对象——继承
概念
在java中继承的概念就是,为多个类将共性继续抽取书写父类(进行类的分类),子类继承父类,继承父类所有非私有的属性与方法
将大量类共性(书写与行为)进行抽取定义的父类,被抽取相同属性与方法的类称之为这个类的子类,这个类则称之为所有被抽取书写与行为的类的父类
语法
使用extends关键字将子类与父类关联
语法:
修饰符 class 子类类名 extends 父类类名{方法体}
package com.practice.extend;
//父类 拥有子类共性(属性、行为)
public class Father {
public String name;
public int age;
public void sayHello(){
System.out.println("我叫"+name+" 今年"+age+"岁");
}
}
package com.practice.extend;
//子类继承父类 可以继承父类的属性与方法
public class Son1 extends Father{
//子类在继承父类的属性与方法外,也可以额外定义自己的属性与方法
public String color;
public void study(){
System.out.println("上学");
}
}
package com.practice.extend;
public class Test {
public static void main(String[] args) {
Son1 s1=new Son1();
s1.name="子类";
s1.age=18;
s1.sayHello();
//注意:子类继承父类是可以使用父类的属性与方法,而不是将父类的属性方法保存到自己的内存
//当进行方法与属性的调用时,首先先去自己的内存空间查找,如果没有根据继承查找父类进行使用
Son1 s2=new Son1();
s2.name="子类2";
s2.age=19;
s2.sayHello();
//不同对象会创建不同的父类对象保存数据
//在创建子类对象时也会创建对应的父类对象
}
}
Object类
Java的继承形式被称为单继承(single inheritance),因为每一个Java类都只能有一个超类。所有类的共同基类是Object类
Object是所有类的父类,所有的类都直接或间接的继承于Object
子类创建对象原理
super关键字
super用于指代父类对象,在子类中调用父类的方法或属性
调用父类构造方法
super(参数列表)
调用父类方法
super.方法名(参数列表)
调用父类属性
super.属性名
在调用父类方法与属性时使用与this类似,只有在子类中存在与父类相同的方法或属性时使用super进行区分,否则可以直接使用属性或方法进行操作
方法的重写
发生在子类中,子类从父类继承的方法不能满足子类的功能需求时,使用方法的重写,将从父类继承的方法重写
在子类中创建与父类修饰符 返回值类型 方法名 参数列表都相同但方法体不同的方法
方法重写的规则:
1、要求子类修饰符范围必须大于或等于父类
2、返回值 方法名 参数列表必须一致
3、在重写的方法上加注释@Override 这样在进行方法重写时,系统会对书写的格式进行检查
4、@Override重写注释
用于对其标注的方法进行重写格式的验证
重写Override与重载Overload的区别
1.书写位置的区别
重载发生在本类中,重写发生在继承过程子类中
2.方法访问权限修饰符的区别
重载修饰符可以为任意修饰符,重写修饰符必须大于或等于父类修饰符
3.返回值类型的区别
重载返回值类型可以为任意类型,重写返回值类型与父类必须相同
4.方法名与原方法(父类方法)必须一致
5.参数列表的区别
重载参数列表必须不同,重写参数列表个数、顺序、类型必须全部相同
final关键字
修饰变量
修饰全局变量:
修饰的变量必须进行初始化赋值,不能修改
修饰局部变量:
修饰的变量不使用可以不赋值,但是只能赋值一次,使用必须赋值
修饰类
被final修饰的类不能被继承,但是可以创建对象,并且创建对象的属性与方法没有影响,final修饰类只影响类的继承
修饰方法
被final修饰的方法可以被继承但是不能被重写,final修饰方法只影响方法继承后的重写
修饰对象
与修饰变量相同,保存的相应对象的地址不能修改,但是对象对应属性可以进行修改。
总结:
1)子类继承父类,继承非私有的属性与方法
2)使用父类的属性与方法存储在父类对象
3)在创建子类对象时会为其创建一个对应的父类对象
4)子类除了可以继承父类属性方法外也可以定义额外的属性与方法
5)每个类只能有一个父类(java中的继承是单继承的)
6)如果一个类没有显式的继承任何类,那么这个类默认继承Object类
7)final修饰表示最终的对当前影响不大,影响的是后续操作