与继承相关的一些细节

Java是单继承,只能继承一个父类

子类可以访问父类非私有成员

父类不可以访问子类特有成员

方法重载:

1.      同一个类中

2.      方法名相同,参数列表不同(参数顺序、个数、类型)

3.      方法返回值,访问修饰符任意

4.      与方法的参数名无关

方法重写:

1.      有继承关系的子类中

2.      方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值与之相同,允许是子类类型

3.      方法的访问修饰符是允许有变化的(访问范围需要大于等于父类的访问范围)

4.      与方法的参数名无关

当子类重写父类方法后,子类对象调用对的是重写后的方法

在子类中,可以定义与父类重名的属性的。

访问修饰符:

private:只允许在本类中进行访问

public:允许在任意位置访问

protected:允许在当前类,同包下的子类/非子类访问,跨包子类可访问,跨包非子类不允许访问

默认:允许当前类,同包下的子类/非子类访问,跨包子类/子类都不允许访问


super:父类对象的引用

父类的无参构造方法是不允许被继承,所以不允许被重写,但是会影响子类对象的实例化

继承的初始化顺序:

父类静态成员->子类静态成员->父类对象构造->子类对象构造

访问修饰符不影响成员加载顺序,跟书写位置有关

super关键字的使用:

访问父类成员方法:super.方法名

访问父类属性:super.属性名

访问父类构造方法:super();


子类的构造过程中必须调用其父类的构造方法

如果子类的构造方法中没有显示标注,则系统默认调用父类无参的构造方法

如果子类构造方法中即没有显示标注,且父类中没有无参构造方法,则编译出错

super( );可以通过super调用父类允许被访问的其他指定构造方法

super();必须放在子类构造方法有效代码的第一行

 

superthis的比较:

this:当前类对象的引用

访问当前类的成员方法

访问当前类的成员属性

访问当前类的构造方法

不能在静态方法中使用

 

super:父类对象的引用

访问父类的成员方法

访问父类的成员属性

访问父类的构造方法

不能在静态方法中使用

 

构造方法调用时,superthis不能同时出现(怎么同时出现在有效代码第一行啊哈哈哈)


猜你喜欢

转载自blog.csdn.net/qq_37117521/article/details/81029577
今日推荐