- 概念 :
类的继承可以使用已有的类为基础派生出新的类,实现代码的复用。
被继承的类称为父类或超类(SuperClass),由继承而得到的类称为子类(SubClass)。所有的类都是直接或间接继承 object 类。
注意⚠️:
1)一个父类可以拥有多个子类,由于 Java 不支持多重继承,所以一个类只能有一个直接父类,但可以变相多继承,即父类上还可以有一个“祖父类”(自定义)。
2)子类继承父类的成员变量和成员方法,同时可以修改父类的成员变量或重写父类的方法 (加上:@override),还可以添加新的成员变量或成员方法。
-->重写父类的方法-->
-
子类的创建:
Java 中类的继承是通过 extends 关键字来实现的,在定义类时若使用 extends 关键字指出新定义类的父类,就是在两个类之间建立了继承关系。
格式如下: class SubClass extends SuperClass
{
...
}
父类:
Xnip2019-08-10_18-16-03.png
子类:
Xnip2019-08-10_18-15-46.png
1)子类的构建方法:
2)调用父类中特定的构造法:
在子类的构造方法中可以通过 super( ) 来调用父类特定的构造方法。
访问父类格式:
a. super.变量名
eg:
b. super.方法名
eg:
注意⚠️:子类不能继承父类的 private 成员,只有将父类成员声明为 protected 子类才能访问。用 protected 修饰的成员可以被三种类所引用:该类自身,与它在同一个包中的其他类,在其他包中该类的子类。
什么情况下需要在一个方法里面调用super的对应方法?
如果一个方法需要完成一个功能,又不能单独完成,必须要父类
做相应的工作,
*1.父类做完之后 子类再操作
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
- 2.子类做点事情之后 在调用父类去完成
protected void onDestroy() {
//...
super.onDestroy();
}
注意⚠️:
1)如果省略了上面的 super(name, age) 语句,父类中没有参数的构造方法还是会被调用的。
2)调用父类构造方法的 super()语句必须写在子类构造方法的第一行。
3)如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super()来调用父类中特定的构造方法,则编译会出错。解决办法是在父类里加上一个不作用且无参数的构造方法,如:public Person( ){}。
4)super()是从子类的构造方法调用父类的构造方法,而this()是在同一个类内调用其他构造方法。由于两个语句都必须放在构造方法内的第一行,故 super()与 this()无法同时存在于同一个构造方法内。
5)super 与 this 一样,不能再 static 环境中使用,包括静态方法和静态初始化器(static 语句块)。
-
覆盖:
A 覆盖父类的方法:
定义父类方法 exercise( ):
Xnip2019-08-10_19-11-26.png
覆盖父类方法 exercise():
Xnip2019-08-10_19-11-41.png
注意⚠️:
1)覆盖时子类应保持与父类中完全相同的方法头声明,即完全相同的方法名,返回值类型和参数列表。
2)子类中不能覆盖父类中声明为 final 或 static 的方法。
3)子类覆盖父类方法时,可以扩大父类中的方法权限,但不可以缩小父类方法的权限。
B 用父类的对象访问子类的成员:
其格式如下:
a. 父类对象 = new 子类方法( );
b. 对象 . 子类方法( );
注意⚠️:
1)通过父类的对象访问子类的成员,只限于“覆盖”的情况发生时。如果某一方法仅存在于子类中,当一父类对象调用它时编译会出错。
2)将子类对象复制给父类类型的变量,这种技术称为“向上转型”。同样,“向下转型”是将父类对象通过强制转换为子类对象再赋值给子类对象的技术。在使用向下转型技术时,必须使用显示类型转换。
Object 类
object 类是 java.lang 中一个特殊类,所有的类都是直接或间接的继承该类而得到的,object 是所有类的根源。
object 类中常用的方法有:
a. equals()方法
b. toString()方法
c. getClass()方法
这里只给toString()方法的使用例子:
今日心得总结:今天是...不知道是第几天了。感觉没有什么心得感悟了,现在每天都只是复习之前上过的内容,虽然也有很多值得重视的知识点,但是感觉确是平淡,目前不知道这部分课程会上到什么时候,有点感觉力不从心了。但是,还是尽量不要颓靡下去,该做的事还要接着好好做,慢慢的可能就感觉有不一样了吧