java中方法重写 this和super的区别
2017-05-23 11:32
274 查看
1.1 方法重写的应用场景&注意事项
方法重写的应用场景:当父类的方法不能完全满足子类使用的时候,既可以保留父类的功能(沿袭、传承),还可以有自己特有的功能方法重写的注意事项:
不可以重写父类私有的成员方法,压根就看不到父类的私有成员
子类重写父类方法,权限必须大于等于父类方法的权限
注解
@Override:方法重写,说明下面的方法是重写父类的方法
案例代码
package com.itheima_03; /* * 方法重写的应用场景:当父类的方法不能完全满足子类使用, 这个时候子类重写父类的方法, * 并可以在方法中使用关键字super调用父类的方法,这样做即可以保有父类的功能,也可以拥有子类特有的功能 * 方法重写的注意事项: * 不能重写父类私有的方法 * 权限必须大于等于父类方法的权限 * * 注解:@ * */ public class ExtendsDemo5 { public static void main(String[] args) { NewPhone np = new NewPhone(); np.call(); } } class Phone { void call() { System.out.println("打电话"); } } class NewPhone extends Phone { @Override public void call() { System.out.println("录音"); //System.out.println("打电话"); //super.call(); } }
1.2 继承中构造方法的执行顺序
A:super(实参列表);语句 在子类的构造方法中使用,用来调用父类中的构造方法(具体哪一个由传递的参数决定),并且只能在构造方法第一行使用B:this(实参列表); 语句 在类的构造方法中使用,用来调用本类中的其它构造方法(具体哪一个由传递的参数决定),并且只能在构造方法的第一行使用
案例代码
package com.itheima_01; /* * 继承中构造方法的执行顺序 * 在子父类中,创建子类对象,调用子类的构造方法, * 在子类的构造方法的第一行代码如果没有调用父类的构造或者没有调用子类的其他构造,则默认调用父类无参构造 * 为什么要调用父类构造? * 因为需要给父类的成员变量初始化 * 肯定会先把父类的构造执行完毕,在去执行子类构造中的其他代码 * * 我是父类无参构造 --- 我是子类有参构造 --- 我是子类无参构造 */ public class ExtendsDemo6 { public static void main(String[] args) { //Die d = new Die(); Zi6 z = new Zi6(); } } class Die6 { public Die6() { System.out.println("我是父类无参构造"); } public Die6(int num) { System.out.println("我是父类有参构造"); } } class Zi6 extends Die6 { public Zi6() { //super(1); //super(); this(1);//不会再调用父类的无参构造了 System.out.println("我是子类无参构造"); } public Zi6(int num) { //会默认调用父类无参构造 System.out.println("我是子类有参构造"); } }
1.3 this与super区别
package com.itheima_01; /* * this和super的区别 this:当前对象的引用 调用子类的成员变量 调用子类的成员方法 在子类的构造方法第一行调用子类其他构造方法 super:子类对象的父类引用 调用父类的成员变量 调用父类的成员方法 在子类的构造方法第一行调用父类的构造方法 */ public class ExtendsDemo7 { public static void main(String[] args) { Zi z = new Zi(); z.function(); } } class Die { int num = 10; public Die() { System.out.println("我是父类无参构造"); } public Die(int num) { System.out.println("我是父类有参构造"); } public void method() { System.out.println("我是父类的方法"); } } class Zi extends Die { //int num = 30; public Zi() { //this(1);//第一行不调用子类其他构造或者是父类构造,默认调用父类无参构造 super(); System.out.println("我是子类无参构造"); } public Zi(int num) { System.out.println("我是子类有参构造"); } public void method() { System.out.println("我是子类的方法"); } public void function() { //this.num = 50; //System.out.println(num); //this.method(); //super.num = 40; //super.method(); System.out.println(this.num); } }
1.4 继承优缺点
A:优点提高了代码的复用性
提高了代码的可维护性
B:缺点:
类的耦合性增强了
开发的原则:高内聚低耦合
内聚:就是自己完成某件事情的能力
耦合:类与类的关系
相关文章推荐
- java基础(八)Math/代码块/继承成员方法指南的关系/继承中成员变量之间的关系/方法的重写/继承中构造方法之间的关系/this和super的区别
- JAVA面向对象基础:继承、变量隐藏、方法重写、包、修饰符、this、super
- java面试题2--方法重写与重载、this和super关键字
- java方法的重载,重写,super,this,final关键字
- Java(方法重写与变量覆盖)(super,this的使用)
- java中this与super区别,重载和重写区别
- [Java] super,this 的区别及构造方法的使用
- java方法的重载,重写,super,this,final关键字
- java方法的重载,重写,super,this,final关键字
- java方法的重载,重写,super,this,final关键字
- java学习中重写与重载方法的区别(转自:小鸟的天空)
- java中方法的重载与重写的区别
- JAVA方法重载与重写的区别
- Java中super的几种用法并与this的区别
- Java中super的几种用法并与this的区别
- java中方法的重载与重写的区别
- java中super的用法和与this的区别
- Java'笔记(六) 方法重写和super关键字
- Java中super的几种用法并与this的区别
- Java中super的几种用法并与this的区别