博客
关于我
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学习总结(39)——49条MySql语句优化技巧
查看>>
Mysql学习总结(3)——MySql语句大全:创建、授权、查询、修改等
查看>>
Mysql学习总结(40)——MySql之Select用法汇总
查看>>
Mysql学习总结(41)——MySql数据库基本语句再体会
查看>>
Mysql学习总结(42)——MySql常用脚本大全
查看>>
Mysql学习总结(43)——MySQL主从复制详细配置
查看>>
Mysql学习总结(44)——Linux下如何实现mysql数据库每天自动备份定时备份
查看>>
Mysql学习总结(45)——Mysql视图和事务
查看>>
Mysql学习总结(46)——8种常被忽视的SQL错误用法
查看>>
Mysql学习总结(48)——MySql的日志与备份还原
查看>>
Mysql学习总结(49)——从开发规范、选型、拆分到减压
查看>>
Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
查看>>
Mysql学习总结(50)——Oracle,mysql和SQL Server的区别
查看>>
Mysql学习总结(51)——Linux主机Mysql数据库自动备份
查看>>
Mysql学习总结(52)——最全面的MySQL 索引详解
查看>>
Mysql学习总结(53)——使用MySql开发的Java开发者规范
查看>>
Mysql学习总结(54)——MySQL 集群常用的几种高可用架构方案
查看>>
Mysql学习总结(55)——MySQL 语句大全再温习
查看>>
Mysql学习总结(56)——MySQL用户管理和权限设置
查看>>
Mysql学习总结(57)——MySQL查询当天、本周、本月、上周、本周、上月、距离当前现在6个月数据
查看>>