子类父类方法与属性的调用(2).txt

 public class Books {
String name="super name";
static String age="super age";
public Books(){
 System.out.println("super 构造方法");
 System.out.println(this.name);
(1) System.out.println(name);            //以上两句均会打印"super name"
 System.out.println(age);       
 
}
public static void show(){
 System.out.println("super static show");
 System.out.println(age);
}
public void show1(){
 System.out.println("super common show1");
 System.out.println(this.name);
 System.out.println(name);
 System.out.println(this.age);
 System.out.println(age);
}
}

 


public class Book extends Books {
 String name="sub name";
 static String age="sub age";
 public Book(){
  System.out.println("sub 构造方法");
  System.out.println(this.name);
(2)  System.out.println(name);      //以上两句均会打印"sub name"
  System.out.println(age);
  
 }
 public static void show(){
  System.out.println("sub show");
  System.out.println(age);
 }
 public void show1(){
  System.out.println("sub common show1");
  System.out.println(this.name);
  System.out.println(name);
  System.out.println(this.age);
  System.out.println(age);
 }
 public static void main(String args[]){
  System.out.println("bs构造方法:");
  Books bs=new Book();                   //先执行父类的构造方法再执行子类的构造方法
  System.out.println("bs的static show:");
  bs.show();
  System.out.println("bs的common show1:");
  bs.show1();
(3)  System.out.println(bs.name);
(5)             System.out.println(bs.age);
  System.out.println("b的构造方法");
  Book b=new Book();
  System.out.println("b的static show:");
  b.show();
  System.out.println("b的common show1:");
  b.show1();
(4)  System.out.println(b.name);  
(6)  System.out.println(b.age);
 }
}


执行结果
bs构造方法:
super 构造方法
super name
super name
super age
sub 构造方法
sub name
sub name
sub age
bs的static show:
super static show
super age
bs的common show1:
sub common show1
sub name
sub name
sub age
sub age
super name  (3)
super age   (5)
b的构造方法
super 构造方法
super name
super name
super age
sub 构造方法
sub name
sub name
sub age
b的static show:
sub show
sub age
b的common show1:
sub common show1
sub name
sub name
sub age
sub age
sub name  (4)
sub age   (6)

总结:
1.在执行子类的构造方法前先执行父类的构造方法
2.子类和父类中都有属性name时
      注意(1)(2)(3)(4)
(1)(2)中在方法中直接打印name,this.name时会直接打印本类中的name属性值,但如(3)(4)中
         Books bs=new Book();
         Book b=new Book();
(3)中打印的是父类的name属性值(这就是前面所说过的属性调用父类,方法调用子类),
(4)中打印的是子类中的name属性值
       这两种情况一定要弄清楚
3.前面说过Books bs=new Book();时属性调用父类,方法调用子类但是当属性,方法都声明为静态时如子类父类中的类属性age,类方法show时this.name,this.show所指的就是this.name,this.show所在类的类属性和类方法
4.Books bs=new Book();
 只有bs.name的时候才会打印父类中的name属性值,其他在方法中使用this.name(或name)打印的都是本类中的name值。this.show1时执行的是子类中的方法,假若子类中没有show1方法则会执行父类中的show1方法
5.Books bs=new Book();
此时Books,Book两者的构造函数都会执行,并不仅仅执行Books的构造函数。
6.Books bs=new Book();
  bs.name(父类的name)
  bs.show1(子类的show1)
  (父类中)this.show(父类的show)
  (子类中)this.show(子类的show)
  (父类中)this.show1(子类的show1)
  Book b=new Book();
  b.name  (子类的name)
  b.show1 (子类的show1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值