继承;成员变量隐藏与重写;关键字super;final类和final方法
2013-07-05 13:47
176 查看
1. 如果一个类的声明中没有使用关键字extends,这个类被系统默认是Object类的子类,Object是包java.lang中的类2. 子类和父类在同一个包中,子类能继承除了private之外的所有东西,要是不再一个包中,只能继承父类的protected和public的变量和方法,不能继承父类的友好方法和友好变量。3. 子类的构造方法没有明确的指明要调用父类的哪个构造函数时,就默认为调用了不带参数的构造函数。4. 子类可以调用继承的方法去操作这些未被子类继承却分配了内存空间的变量,还有父类成员变量隐藏的问题:
class A { private int x = 10;//private变量 protected int y = 20; public int z = 100;//父类成员变量z void f() { y = y + x;//包含private变量x System.out.printf("x = %d, y = %d", x, y); } } class B extends A { int z = 300;//子类重新定义与父类中相同的成员变量(名字相同,类型可以不同)时,子类就隐藏了父类的该成员变量 int p() { z = z + 1; System.out.printf("z = %d\n", z); return z; } void g() { y = y + 1; } } public class test5 { public static void main(String args[]) { B b = new B(); b.p();//查看变量的隐藏 b.g();//调用子类自己声明的方法 b.f();//调用从父类继承来的方法, 在这个方法里可以访问到private类型的变量x b.g();//调用子类自己的声明的方法 } }输出:
z = 301 x = 10, y = 31
5. 方法重写的问题:
//方法的重写:子类中定义一个方法,并且这个方法的名字,返回类型,参数个数和类型与从父类继承来的方法完全相同,//子类通过方法的重写可以隐藏继承的方法,可以把父类的状态和行为改变为子类自己的状态和行为class C{public int y = 20;//父类中定义的变量yvoid f(){y = y + 1;System.out.printf("y = %d", y);}}class D extends C{int z = 300;//子类中新定义的变量zvoid f(){y = y + z;//重写的方法既可以操作继承的成员变量,也可以操作子类声明定义的成员变量System.out.printf("y = %d",y);}}public class test6{public static void main(String args[]){D d = new D();d.f();//调用重写的方法}}输出:y = 320
6。 super关键字:
//方法的重写:子类中定义一个方法,并且这个方法的名字,返回类型,参数个数和类型与从父类继承来的方法完全相同,//子类通过方法的重写可以隐藏继承的方法,可以把父类的状态和行为改变为子类自己的状态和行为//关键字super有两种用法:一种是子类使用super调用父类的构造方法,另一种是子类使用super调用被子类隐藏的成员变量和方法class C{public int y = 20;//父类中定义的变量yvoid f(){y = y + 1;System.out.printf("这是父类中的f():y = %d", y);}}class D extends C{int z = 300;//子类中新定义的变量zint y = 100;void f()//重写方法{int c = super.y;System.out.printf("这时父类中y的值:super c = %d\n", c);//父类成员变量被隐藏之后,通过super调用父类中的变量y = y + z;//重写的方法既可以操作继承的成员变量,也可以操作子类声明定义的成员变量int m = y + super.y;//子类中新定义的y和父类中继承的ySystem.out.printf("子类中最终的 y = %d;父类中的y为 super.y = %d; 子类y和父类y之和:m = %d \n",y, super.y, m);}void s(){super.f();//在父类方法隐藏之后,通过super调用父类中的方法}}public class test6{public static void main(String args[]){D d = new D();d.f();//调用重写的方法以及通过super调用父类中的变量d.s();//通过super调用父类中的方法}}输出:
这时父类中y的值:super c = 20子类中最终的 y = 400;父类中的y为 super.y = 20; 子类y和父类y之和:m = 420这是父类中的f():y = 21
7. final类和final方法:
final类不能被继承,没有子类;
final方法不能被子类重写。
相关文章推荐
- java 子类继承父类成员变量的隐藏、实现方法的重写
- java基础(八)Math/代码块/继承成员方法指南的关系/继承中成员变量之间的关系/方法的重写/继承中构造方法之间的关系/this和super的区别
- java入门-成员变量的隐藏与方法重写(super)
- Java子类继承(二):隐藏成员变量和方法重写的理解
- JAVA面向对象基础:继承、变量隐藏、方法重写、包、修饰符、this、super
- JAVA第七节-继承,继承中方法重写,继承的初始化顺序,final关键字,super关键字,object类
- java中的继承,继承中方法的重写,继承的初始化顺序,final关键字,super关键字
- 继承(概念、重写父类方法、super关键字)| final关键字
- 8 面向对象(制作帮助文档,通过JDK提供的API学习了Math类,代码块,继承(继承子父成员访问特点,super关键字,方法重写))
- final关键字和成员变量,构造方法,成员方法在继承的深入思考
- Java第11次作业:什么是继承?继承的好处?什么是覆写?super()?构造代码块?子父类初始化顺序? 抽象类能用final声明吗?final关键字声明类 方法 变量以及全局常量?抽象类的构造方法?
- 成员变量的隐藏和方法重写
- 方法重写与成员变量隐藏
- 成员变量的隐藏和方法重写
- OC 初识NSString,self关键字,继承,成员变量的可见性,description方法
- Lesson_for_java_day09--继承、实例化、构造方法、覆盖、重载、this关键字、super关键字、全局变量和局部变量
- Java-继承之构造方法,重写,final关键字
- 成员变量的隐藏和方法的重写
- java方法的重载,重写,super,this,final关键字
- JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍