面向对象-特征之继承
Posted zhang-xy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象-特征之继承相关的知识,希望对你有一定的参考价值。
继承:
1.概念:将相同的成员变量和方法写到父类,子类继承父类,还可以加上子类独有的属性,减少冗余代码。
举例:儿子继承父亲的一些特征和手艺,儿子还可以有自己的特征。
2.使用:子类名+extends+父类名
用super()方法名来调用父类中的方法。
注意:一个子类只能继承一个父类,一个父类可以被多个子类继承。
3.继承关系初始化顺序
父类属性--》父类的构造方法--》子类属性--》子类的构造方法
先父后子 先属后构
方法的重载和重写?overloading和override区别
一、重载 overloading
1.规则:同一个类中
方法名称相同
参数列表必须不相同(类型 个数 顺序)
返回值类型和访问修饰符无关
构造方法重载
例:public Student(){}
public Student(String name){}
public Student(String sex){}//错误,有相同类型的参数
public Student(String name,int age){}
2.发生在同类中。
二、重写 override
1.规则:在继承关系中体现
方法名字相同
参数列表必须相同
返回值的类型相同或者是其子类
访问修饰符不能严于父类(父类是protected 子类是protected public )
方法重写:相对于继承而言,子类中对父类已经存在的方法进行区别修改。
2.发生在子类和父类两个类中。
关键字:
abstract 抽象类
1.修饰class后变为抽象类,限制实例化
2.类中定义方法没有意义,因此我们可以在类中定义方法为抽象方法,抽象方法没有方法体。
3.抽象方法的实现步骤
1)在父类的方法前添加abstract,去除方法体
2)在子类中重写此抽象方法
4.为什么使用抽象方法?
1)父类只是知道子类应该有哪些方法,但是无法准确完成方法具体实现
2)避免子类设计的随意性
5.注意:
1)父类中编写抽象方法,子类必须重写
2)抽象类中可以有普通方法,也可以有抽象方法
3)抽象方法必须在抽象类中
4)final和abstract是两个相反的单词,绝对不能同时修饰
Object 上帝类 祖宗类
1.概念:Object类是所有类的父类。如果一个类没有使用extends关键字标识继承另一个类,那么这个类默认继承Object
因此自定义的类和底层开发人员的类
例:String str="";
str.equals("");//equals标明并不是在Object类,是String类。因为String子类重写了Object父类里的方法
2.Object类中的主要方法
1)equals :比较对象的引用是否指向同一块内存地址。(引用:指向一块内存地址)
2)toString()
StringBuffer--》toString()--->StringBuffer转换为String类型
返回的是哈希码值(对象地址字符串)。(Hash)
我们直接使用System.out.println(dog);输出一个对象
结果就是对象的地址字符串也叫哈希码值([email protected])
哈希码值:通过哈希算法(Hash)生成的一个字符串,用来区分我们的对象地址码。
3)getClass() 可以得到此对象的类型
System.out.println(dog.getClass());
class com.sisp.oop4.object.Dog
以上是关于面向对象-特征之继承的主要内容,如果未能解决你的问题,请参考以下文章