当存在继承关系时,内部访问的特点:
1、成员属性:
public class TestDemo2{
public static void main(String[] args){
Father.name =
}
}
//父类
class Father{
String name;
}
//子类
class Son extends Father{
String name;//成员变量
public void show(){//局部变量
String name;
System.out.println(name);//就近原则,使用局部变量
System.out.println(this.name);//this调用本类成员
System.out.println(super.name);//super调用父类成员
}
}
2、成员方法:
public class TestDemo3{
public static void main(String[] args){
Son son = new Son();
son.show();//打印 This is Son show() 虽然是就近原则的结果,但这是重写
}
}
class Father{
String name;
int age;
public void show(){
System.out.println("This is Father show()");
}
}
class Son extends Father{
//对父类方法的重写 @override可以判断该方法是否是对父类方法的重写
@override
public void show(){
System.out.println("This is Son show()");
//重载
public void show(String name){
System.out.println("This is Son show(String name)");
}
}
class Father{
private String name;
public void show(){
System.out.println("Father:"+getName);
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
class Son extends Father{
@override
public void show(){
System.out.println("Son:"+super.getName()+"---"+this.getName()+"---"+getName());
}
}
3、构造方法:
class Father{
public Father(){
}
}
class Son extends Father{
public Son(){//无参构造器
//如果没有super();,系统自动调用,因为初始化子类的时候,可能会用到父类的数据,所以先初始化父类,再初始化子类,如果不初始化父类,子类就用不到需要的数据
super();
}
}
4、继承特点:
学习:从上往下,因为最高层的父类,更容易看出共性
使用:从下往上,因为最低层的子类,拥有的最多
在Java中不支持多继承,比如A extends B , C,这会报错。但是Java支持多层继承,比如:A extends B,B extends C



