static、子类和父类

package com.interview.demo;
class Cat{
protected String color = "random";
public Cat(){}
public void showCatColor(){
System.out.println("cat:"+color);
}
public void showColor(){
System.out.println("cat:"+color);
}
}
public class WhiltCat extends Cat{
protected String color = "white";
public WhiltCat(){
super();
}
public void showCatColor(){
System.out.println("WhiltCat:"+color);
}
public void showColor(){
System.out.println("WhiltCat:"+color);
}
public static void main(String[] args){
WhiltCat whiltCat = new WhiltCat();
Cat cat =whiltCat;
cat.showColor();
cat.showCatColor();
}

}

运行结果:

WhiltCat:white
WhiltCat:white

/*总结:WhiltCat whiltCat = new WhiltCat();
 Cat cat =whiltCat;//对象上转型
                子类WhiltCat被实例化了所有非静态成员变量被加载并且实例化;
      static修饰的变量和方法随类的加载而初始化和加载
      Cat父类没有初始化但加载了所以静态(static修饰的)被加载了。
                  所以会调用父类的 同名方法,不会调用子类的。
                  所以当 子类重写父类的同名静态方法时   
 Cat cat =  new WhiltCat();
 cat会调用自己的(只要父类自己有就不会调用子类的)              
*/
package com.interview.demo;
class Cat{
protected static String color = "random";
public Cat(){}
public void showCatColor(){
System.out.println("cat:"+color);
}
public static void showColor(){
System.out.println("cat:"+color);
}
}
public class WhiltCat extends Cat{
protected static String color = "white";
public WhiltCat(){
super();
}
public void showCatColor(){
System.out.println("WhiltCat:"+color);
}
public static void showColor(){
System.out.println("WhiltCat:"+color);
}
public static void main(String[] args){
WhiltCat whiltCat = new WhiltCat();
Cat cat =whiltCat;
cat.showColor();
cat.showCatColor();
}
}

运行结果:

cat:random
WhiltCat:white

***********************************************

package com.interview.demo;
class Cat{
protected static String color = "random";
public Cat(){}
public void showCatColor(){
System.out.println("cat:"+color);
}
public static void showColor(){
System.out.println("cat:"+color);
}
}
public class WhiltCat extends Cat{
protected static String color = "white";
public WhiltCat(){
super();
}
public void showCatColor(){
System.out.println("WhiltCat:"+color);
}
public static void showColor(){
System.out.println("WhiltCat:"+color);
}
public static void main(String[] args){
/*Cat cat = new Cat();
WhiltCat whiltCat = (WhiltCat)cat;
cat.showColor();
cat.showCatColor();
//运行结果:Exception in thread "main" java.lang.ClassCastException
*/
/*Cat cat = new WhiltCat();
WhiltCat whiltCat = (WhiltCat)cat;
cat.showColor();
cat.showCatColor();
//运行结果:cat:random  WhiltCat:white(父类有的不会用子类的)
*/
/*Cat cat = new WhiltCat();
WhiltCat whiltCat = (WhiltCat)cat;
whiltCat.showColor();
whiltCat.showCatColor();
//运行结果WhiltCat:white  WhiltCat:white
*/
}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值