本文共 3120 字,大约阅读时间需要 10 分钟。
练习:成员变量的使用
package cn.oop2;/* * 本类用于测试继承中变量的使用 */public class TestExtends { public static void main(String[] args) { final Son son = new Son(); son.eat(); }}class Father { int count = 0; int sum = 200;}class Son extends Father { int sum = 100; public void eat() { int sum = 10; System.out.println(sum);// 10,变量打印的原则就近原则打印局部变量 System.out.println(this.sum);// 100,使用this,调用的是成员变量 System.out.println(super.sum);// 200,使用super调用的是父类变量 System.out.println(count);// 0,super调用父类资源 }}
练习2:成员方法的使用
package cn.oop2;/* * 本类用于测试继承中成员方法的使用 */public class Test2Extends2 { public static void main(String[] args) { final Son2 son2 = new Son2(); Father2 son3 = new Son2(); son2.play();// 儿子喜欢打篮球 son2.study();// 儿子喜欢打篮球 son3.play();// 儿子喜欢打篮球 }}class Father2 { public void play() { System.out.println("父亲喜欢打羽毛球"); }}class Son2 extends Father2 { public void play() { System.out.println("儿子喜欢打篮球"); } public void study() { System.out.println("儿子学习搬砖"); }}
**总结:** **1. 方法重写的意义:是在不改变原代码的前提下,完成业务的修改 2. 重写的要求:子类的方法声明(返回值类型 方法名(参数列表))和父类的一模一样 3. 重写并没改变父类的原有的业务,知识子类的业务进行了修改 4. 子类继承了父类,可以使用父类的所有功能,还可以拥有自己特有的功能,实现功能的拓展 5. 变成中的ocp原则:面向修改关闭,面向拓展开放--只允许功能拓展,不允许修改原来的代码**3:构造方法的使用```javapackage cn.oop2;/* * 本类用于测试继承中构造方法的使用 */public class Test3Extends3 { public static void main(String[] args) { final Person person = new Person(); final Person person2 = new Person("海绵宝宝"); final Person person3 = new Person("花木兰", 18, "中国古代"); System.out.println(person2.name);// 海绵宝宝 System.out.println(person3.address);// 中国古代 person.eat();// 干饭时间到! person2.eat();// 干饭时间到! person3.eat();// 干饭时间到! }}class Person { String name; int age; String address; public Person() {//创建无参数构造--当new Person()时,会触发 System.out.println("我是Person类的无参构造"); } public Person(String s) { name = s; System.out.println("我是Person类的1个参数构造参构造"); } public Person(String name, int age, String address) { super(); this.name = name; this.age = age; this.address = address; System.out.println("我是Person类的全参构造"); //构造方法的定义:修饰符 方法名 (参数列表){方法体}------方法名与类名保持一致 } public void eat() { System.out.println("干饭时间到!"); }//普通方法的定义:修饰符 方法名 (参数列表){方法体}-}
关于构造函数应该怎么记忆:
package cn.oop2;/* * 本类用于测试继承中构造方法的使用 */public class Test3Extends3 { public static void main(String[] args) { final Son4 son4 = new Son4("雷雨"); }}class Father4 { public Father4(String s) { System.out.println("我是父类的无参构造" + s); }}class Son4 extends Father4 { public Son4(String s) { super("曹雪芹"); System.out.println("我是子类的构造方法");// 我是父类的无参构造曹雪芹 }}
记忆: this和super区别:
重载Overload与重写Override的区别
转载地址:http://swksz.baihongyu.com/