您的位置:首页 > 编程语言 > Java开发

JAVA隐式转换和方法重写和static关键字

2016-04-17 21:33 393 查看
author : chen ming dong

闲来无事做想玩玩JAVA了 今天碰到点困难,算是完美解决了

package 类;

// static用来修饰类中的变量或方法,成为静态变量,静态方法
// 静态变量对于所有的类对象共享同一个内存空间
//
public class 隐式类型转换 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Cat myCat = new Cat();
Cat.testClass();
Cat.AtestClass();
System.out.println( );
//Cat.testInstance();   //Cat 只能调用类中有 static 的方法
myCat.testClass();      // Cat 的对象可以调用 类中的一切
myCat.testInstance();

System.out.println( );

Animal myAnimal = myCat;
Animal.AtestClass();//Animal 只能调用 类中有static 的方法
//从下面可以看出  只是隐式类型转换了  子类中的 static 部分(换句话说就是,子类中的static只能自己用)

// static 是在程序执行时,类的字节码文件就加载到内存中去的
// 没有 static 就不能加载到内存中去,需要操作对象进行加载
myAnimal.AtestClass();
// 方法重写的地方,不能转换(还是Cat类中的方法),如果方法没有重写就可以完全转换为Animal类
myAnimal.testInstance();
}
}
//创建一个 父类
class Animal{
public static void AtestClass(){//对这个static方法  只能父类自己用,重命名(ALT+SHIFT+R)子类方法不改变
System.out.println("Animal中的类方法");
}
public void testInstance(){ // 对这个方进行重命名(ALT+SHIFT+R)时,子类的方法也会改变
System.out.println("Animal中的实例方法");
}
}
//创建一个子类
class Cat extends Animal{
public static void testClass(){//不能算是对父类的重写,他根本访问不到父类static的方法
System.out.println("Cat 中类的方法");
}
// 下面这个方法   叫做               父类的重写
public void testInstance(){
System.out.println("Cat中类的实例方法");
}
}


注意:

含有 static 的方法 叫做类方法

没有 static 的方法 叫做实例方法

父类的类方法在子类中也只能是类方法

父类的实例方法在子类中也只能是实例方法

总结:

类方 对 类方

实方 对 实方
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: