super可以调用父类的方法,进行使用也可以理解为父类对象,
this关键字表示当前对象。
当一个属性的使用没有添加this或者super关键字的时候,他的查找顺序为:局部-->成员-->父类,如果没有则会报编译异常
被this修饰的变量,如果本类的成员变量中没有找到,也会去父类当中查找
被super修饰的变量只会从父类中查询,如果父类中没有,而子类存在,同样会编译错误
子类
public void sq(){ System.out.println("S:"+super.num); }
父类
public int num = 10;
运行测试
在构造方法中,默认会添加一句super();而且必须是在第一行
public Student(){ System.out.println("父类执行了:"); }
public User(){ System.out.println("子类执行了:"); }
运行:
super和this关键字访问成员的区别
成员变量:
this成员变量
super . 成员变量 super不能访问私有成员变量
成员方法:
this . 成员方法
super . 成员方法
构造方法:
this(参数列表);
super(参数列表);
任何一个构造方法都默认的会在构造方法上生成super();访问父类的无参构造方法,为了初始化父类的成员变量
this和super二个方法不能在同一个方法中
作用:表示被修饰的元素的访问权限
分为:public,protected,default,private
访问权限修饰符可以修饰的元素有:
类:
成员变量
成员方法
这四个的特点分别是:
public:成员对一切类可见
protected:本包下面都可见,不同包下只有子类可见
default:只对本包下面的可见
private:只对本类可见
宽严关系
public > protected > default > private
搜索
复制