一、Java的继承用extends关键字实现,super用于访问本类的父类的元素和方法。示例代码如下
1.父类 Person.java
package opp.superAndThisSuper指代父类;
public class Person {
protected String name = "super";
}
2.子类Student.java
package opp.superAndThisSuper指代父类;
public class Student extends Person {
private String name = "Student";
public String getName(String name) {
System.out.println("传入参数的name:"+name);
System.out.println("子类的this.name:"+this.name);
System.out.println("父类的super.name: "+super.name);
return name;
}
}
3.mian 方法类Demo.java
package opp.superAndThisSuper指代父类;
public class Demo {
public static void main(String[] args) {
String name = "main";
new Student().getName(name);
}
}
4.输出结果:
name 访问的是main中定义的String name=“main”;
this.name 访问的是子类Student类中的 private String name = “student”;
super.name访问的是 父类 Person中的 protected String name = “person”;
传入参数的name:main
子类的this.name:Student
父类的super.name: super
二、为什么Person 类中的属性 要使用 protected权限修饰?
//权限的大小级别是 private default protected public
//可以被本类访问 : Yes Yes Yes Yes
//被本包(package): Yes Yes Yes
//被继承的子类访问: Yes Yes
//可被外包类访问: Yes
//此处想要子类能访问父类的属性 至少需要protected的权限修饰
protected String name = "super";
1.private – default – protected – public 4中访问权限修饰符号的区别.
2.权限从小到大依次是 private-- defalt-- protected – public
3.权限细节分布:
从小到大的级别 |
private |
default |
protected |
public |
可以被本类访问 |
Yes |
Yes |
Yes |
Yes |
可以被本包(同package)访问 |
|
Yes |
Yes |
Yes |
可以被继承的子类访问 |
|
|
Yes |
Yes |
可以被外包的类访问 |
|
|
|
Yes |
更多:
1.private的属性:只用本类的方法可以访问.
2.default(默认):对同包的类都有访问权限
3.protected : 专门为继承(extendx)设计的权限,课提供本包类的子类的访问。
4.public :在外包里的类也可访问权限全开。
三、super注意:
1.super (),this()调用父类的构造方法,必须在构造方法的第一行代码,(默认调用父类的无参构造)
2.super 只能出现在子类的方法和构造方法中.
3.super ()和this() 调用构造方法只能一个,因为必须在第一行,只用一个