//测试继承中成员变量的用法
public class Test1_Extends {
public static void main(String[] args) {
Sub s=new Sub();
s.show();
}
}
class Fu{
int sum=30;
}
class Sub extends Fu{
int sum=20;
public void show() {
int sum=10;
System.out.println(sum);
System.out.println(this.sum);//通过this调用本类的成员变量
System.out.println(super.sum);//通过super调用父类的成员变量
}
}
输出结果:
//测试继承中成员方法的使用
public class Test2_Extends2 {
public static void main(String[] args) {
Sub2 s =new Sub2();
//因为子类重写了eat()方法,从此,eat()的实现就覆盖掉了父类的原有功能
s.eat();//子类调用父类的方法,如果重写 调用的是重写后的方法
s.study();//子类调用自己的方法
}
}
class Fu2{//定义父类
public void eat() {
System.out.println("爸爸吃肉你喝汤");
}
}
class Sub2 extends Fu2{
//子类特有的方法
public void study() {
System.out.println("我爱学习");
}
//重写(要求:方法申明和父类完全相同) 修改父类原有的功能
public void eat() {
System.out.println("儿子吃肉爸爸看");
}
}
若要先调用父类方法,使用super关键字
public void eat() {
super.eat();
System.out.println("儿子吃肉爸爸看");
}
继承中构造方法的使用
1.子类创建对象时,默认会访问父类的无参构造方法
2.在子类构造方法的第一行,都有一条默认语句:super();
3.父类没有无参构造时,可以在子类中用super调用父类的其他构造方法。
//测试继承中构造方法的使用
public class Test3_Extends3 {
public static void main(String[] args) {
Sub3 s=new Sub3();
}
}
class Fu3{//创建父类
public Fu3() {
System.out.println(1);
}
}
class Sub3 extends Fu3{//创建子类
public Sub3() {
super();
System.out.println(2);
}
}
class Fu3{//创建父类
//提供了含参构造时,无参构造就没有了
public Fu3(int i) {
System.out.println(1);
}
}
class Sub3 extends Fu3{//创建子类
//super()会自动调用父类的无参构造
//当父类没有无参构造时可以调用其他构造
public Sub3() {
super(0);
System.out.println(2);
}
}