面向对象(继承,重写,this,super,抽象类)
2017-06-13 09:18
176 查看
继承
定义一个类B时,发现已有类A与要定义的类B相似,并且类B属于类A的一种时,可以将类B定义为类A的子类。
当多个类有着共性内容,可以将共性内容向上抽取,抽取到一个新的类中,这个新类和多个类形成一个关系叫做继承。
子类继承父类后,自动拥有父类所有可继承的属性和功能。
注意事项
java只支持单继承,不支持多继承,支持多层继承。
所有的类都直接或者间接继承了Object类,Object类没有父类
构造方法不能被继承
方法重写
当子类继承父类后,自动拥有父类所有可继承的属性和功能。但是子类觉得父类方法不够强大时,可以对父类方法按照自身逻辑
进行重写。 也叫方法复写,方法覆盖。
注意事项
1.可以使用 @Override检验是否为方法重写
2.子类方法权限必须大于等于父类方法权限
3.推荐和父类方法一样
父类对象与子类对象的创建过程
父类对象优先于子类对象产生
当每次创建子类对象时,都会默认调用父类的空参构造,创建父类对象(不是new出来的对象)
实际上是在子类对象中 创建了一个父类对象 因为子类要想父类的内容
需要有这样一个父类的空间支持
在子类的每一个构造方法的第一行都有一个默认的super()调用父类的空参构造
super(参数) 调用父类的构造方法
this和super
this:本类对象的引用
super:本类对象中父类的引用
this和super
this.属性名 访问本类成员变量
this.方法名(参数) 访问本类其他方法
this(参数) 访问本类其他构造方法(注意必须在构造方法的第一行使用)(了解即可)
super.属性名 访问父类成员变量(非私有)
super.方法名(参数) 访问父类成员方法(非私有)
super(参数) 访问父类构造方法(非私有)(注意必须在构造方法的第一行使用)
注意:
this和super调用构造方法时不可以在同一个构造方法中同时使用,因为都需要定义在第一行。
调用构造方法时,必须要保证有这个构造方法才能够调用,如果没有这个构造方法则不能调用。
抽象类
抽象方法:没有方法体的方法叫做抽象方法
抽象类:有抽象方法的类必须是抽象类
抽象类的使用
1.抽象类不能创建对象
2.定义子类继承抽象类
3.子类重写父类方法
4.创建子类对象 调用方法
抽象类细节:
1.抽象类可以没有抽象方法
2.抽象类可以有具体的方法
3.抽象类必须是一个父类
4.子类必须重写所有抽象方法,否则子类也是一个抽象类
5.抽象类有构造方法,子类需要使用构造方法为成员变量赋值
抽象类出现的意义
抽象类定义了一类事物最基本的属性和行为。强制子类必须实现其功能。子类必须重写其抽象方法
抽象类的定义
* 抽象类的定义
* public abstract class 类名{
*
*
* }
定义一个类B时,发现已有类A与要定义的类B相似,并且类B属于类A的一种时,可以将类B定义为类A的子类。
当多个类有着共性内容,可以将共性内容向上抽取,抽取到一个新的类中,这个新类和多个类形成一个关系叫做继承。
子类继承父类后,自动拥有父类所有可继承的属性和功能。
注意事项
java只支持单继承,不支持多继承,支持多层继承。
所有的类都直接或者间接继承了Object类,Object类没有父类
构造方法不能被继承
方法重写
当子类继承父类后,自动拥有父类所有可继承的属性和功能。但是子类觉得父类方法不够强大时,可以对父类方法按照自身逻辑
进行重写。 也叫方法复写,方法覆盖。
注意事项
1.可以使用 @Override检验是否为方法重写
2.子类方法权限必须大于等于父类方法权限
3.推荐和父类方法一样
父类对象与子类对象的创建过程
父类对象优先于子类对象产生
当每次创建子类对象时,都会默认调用父类的空参构造,创建父类对象(不是new出来的对象)
实际上是在子类对象中 创建了一个父类对象 因为子类要想父类的内容
需要有这样一个父类的空间支持
在子类的每一个构造方法的第一行都有一个默认的super()调用父类的空参构造
super(参数) 调用父类的构造方法
this和super
this:本类对象的引用
super:本类对象中父类的引用
this和super
this.属性名 访问本类成员变量
this.方法名(参数) 访问本类其他方法
this(参数) 访问本类其他构造方法(注意必须在构造方法的第一行使用)(了解即可)
super.属性名 访问父类成员变量(非私有)
super.方法名(参数) 访问父类成员方法(非私有)
super(参数) 访问父类构造方法(非私有)(注意必须在构造方法的第一行使用)
注意:
this和super调用构造方法时不可以在同一个构造方法中同时使用,因为都需要定义在第一行。
调用构造方法时,必须要保证有这个构造方法才能够调用,如果没有这个构造方法则不能调用。
抽象类
抽象方法:没有方法体的方法叫做抽象方法
抽象类:有抽象方法的类必须是抽象类
抽象类的使用
1.抽象类不能创建对象
2.定义子类继承抽象类
3.子类重写父类方法
4.创建子类对象 调用方法
抽象类细节:
1.抽象类可以没有抽象方法
2.抽象类可以有具体的方法
3.抽象类必须是一个父类
4.子类必须重写所有抽象方法,否则子类也是一个抽象类
5.抽象类有构造方法,子类需要使用构造方法为成员变量赋值
抽象类出现的意义
抽象类定义了一类事物最基本的属性和行为。强制子类必须实现其功能。子类必须重写其抽象方法
抽象类的定义
* 抽象类的定义
* public abstract class 类名{
*
*
* }
相关文章推荐
- 面向对象,类的组合关系,继承,实现,方法重写,方法重载,this的使用,抽象方法和抽象类的比较,父类构造方法存在的意义,多态的是用和解析,各种访问修饰符
- java面向对象【重写、this、super,抽象类】
- JAVA面向对象基础:继承、变量隐藏、方法重写、包、修饰符、this、super
- 黑马程序员——Java基础---面向对象代码块和继承和this和super和重写和重载和final
- 黑马程序员_学习笔记:4) 面向对象2:继承、this、super、finally、Abstract、模板设计模式、接口
- JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍
- java学习日记_34:面向对象之super关键词、this与super的区别和继承中构造方法的关系。08.16~17
- 面向对象一______之继承、super和this的比较
- Java学习笔记9(面向对象二:this、继承、抽象类)
- JAVA基础学习(七)---面向对象三---继承,接口与 抽象类
- 黑马程序员面试题面向对象一(封装,构造函数,this,static,单例设计模式,继承)
- Java面向对象学习笔记 -- 3(继承、向上造型、重写)
- PHP基础----面向对象相关特性----12类的继承与方法重写
- java面向对象浅析--抽象类、接口与多继承
- 2、Java面向对象笔记(继承)(抽象类)(多态)
- 黑马程序员_面向对象2_(继承、多态、抽象类abstract、接口interface、内部类)
- 黑马程序员_五 【初识面向对象】【类、构造方法、对象】【封装、继承、多态】【this、super】
- 继承 单继承 多层继承 成员变量:this & super ; 成员函数:覆盖操作; 一个对象实例化过程!!
- 黑马程序员_面向对象二(继承,多态,抽象类abstract,接口Interface,内部类)
- 23-JAVA面向对象-继承-super关健字