博客
关于我
006继承的用法
阅读量:550 次
发布时间:2019-03-09

本文共 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("干饭时间到!");	}//普通方法的定义:修饰符  方法名 (参数列表){方法体}-}

关于构造函数应该怎么记忆:

  1. 特点:方法名与类名相同,且没有返回值类型
  2. 执行时机:创建对象时执行
  3. 默认会创建无参构造,但是,如果自定了含参数构造,默认的无参数构造会被覆盖,注意要手动添加哦~
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区别:

  1. this代表本类对象的引用
  2. super代表父类对象的引用,就相当于创建了一个父类对象
  3. this可以在两个变量相同时,用于区分成员变量和局部变量
  4. this可以在奔雷的构造方法中,位置必须是在第一条语句,注意,不能相互调用,会造成死循环
  5. super是发生了继承关系以后,子类如果想要用父类的功能,可以通过super调用
  6. 如果变量发生了重写,还想要用父类的功能,需要使用super来调用
  7. super在调用父类方法的时候,必须出现在子类构造方法的第一条语句,而且如果父类中没有提供无参数=构造,子类可以通过调用super来调用弗雷中的其他含参数构造.

重载Overload与重写Override的区别

  1. 重载:是指的是一个类中的现象,是指的是一个类中有很多同名的方法,但是方法的 参数列表不同
  2. 重写:是指发生了继承关系以后(两个类),子类去修改父类的原有的功能,子类中有一个方法签名(返回值类型 方法名 (参数列表)和父类的一模一样)
  3. 重载的意义:是为了方便外界对方法进行调用,什么样的参数程序都可以找到对应的方法来执行,体现是的代码的灵活性
  4. 重写的意义:是在不修改源码的情况下,进行功能的修改和拓展.

转载地址:http://swksz.baihongyu.com/

你可能感兴趣的文章
mysql 删除日志文件详解
查看>>
mysql 判断表字段是否存在,然后修改
查看>>
MySQL 到底能不能放到 Docker 里跑?
查看>>
mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
查看>>
mysql 协议的退出命令包及解析
查看>>
mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
查看>>
mysql 四种存储引擎
查看>>
MySQL 基础模块的面试题总结
查看>>
MySQL 备份 Xtrabackup
查看>>
mysql 多个表关联查询查询时间长的问题
查看>>
mySQL 多个表求多个count
查看>>
mysql 多字段删除重复数据,保留最小id数据
查看>>
MySQL 多表联合查询:UNION 和 JOIN 分析
查看>>
MySQL 大数据量快速插入方法和语句优化
查看>>
mysql 如何给SQL添加索引
查看>>
mysql 字段区分大小写
查看>>
mysql 字段合并问题(group_concat)
查看>>
mysql 字段类型类型
查看>>
MySQL 字符串截取函数,字段截取,字符串截取
查看>>
MySQL 存储引擎
查看>>