黑马程序员 继承
2015-08-14 17:43
148 查看
——- android培训、java培训、期待与您交流! ———-
1,继承概述
把多个类中相同的内容或者功能给提取出来定义到一个类中,让继承的它的类都有这些内容或者功能。
体现
2,好处:
(1)提高代码的复用性;
(2)让类与类之间产生关系,有了这个关系,才有了多态的特性
3,注意:
(1)不要为了获取其他类的功能,简化代码而继承;必须是类与类之间有所属关系才可以继承。
(2)Java只支持单继承,不支持多继承。因为多继承容易带来安全隐患,当多个父类中定义了相同函数,但函数内容不同时,子类对象不确定要进行哪一个。但是java保留这种机制,并用另一种体现形式来完成表示,多实现。
(3)子类只能继承父类非私有的成员变量和成员方法,只能通过get()和set()方法或者用父类的带参构造访问
(4)当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容:
(a)父类中的私有方法不可以被重写
(b)子类方法访问权限一定要大于或等于父亲的方法权限
(c)静态的方法只能被静态方法重写
体现
4,this与super
This:
代表本类对象的引用
Super:
代表父类的内存空间的标识(可以理解为父类的对象引用)
当子父类出现同名时,使用super
注意:
(a)子类的所有的构造函数,默认都会访问父类中空参数的构造函数,因为子类中每一个构造函数的第一行都有一句隐式语句super()
(b)当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。当然,子类的构造函数第一行也可以手动指定this语句访问本类中的构造函数
体现
5,final关键字
(a)是最终的意思,它可以修饰类,修饰成员方法,成员变量
(b)它修饰的成员方法,是不可以被子类重写的
(c)它修饰的类不能被继承
(d)它修饰的成员变量,其实是一个常量,规范全大写,单词间由”_”连接
(e)内部类只能访问final修饰的局部变量
——- android培训、java培训、期待与您交流! ———-
1,继承概述
把多个类中相同的内容或者功能给提取出来定义到一个类中,让继承的它的类都有这些内容或者功能。
体现
class OldPhone { public void call() { System.out.println("打电话"); } } class NewPhone extends OldPhone { public void send() { System.out.println("发信息"); } } class PhoneDemo { public static void main(String[] args) { NewPhone p = new NewPhone(); p.call(); p.send(); } }
2,好处:
(1)提高代码的复用性;
(2)让类与类之间产生关系,有了这个关系,才有了多态的特性
3,注意:
(1)不要为了获取其他类的功能,简化代码而继承;必须是类与类之间有所属关系才可以继承。
(2)Java只支持单继承,不支持多继承。因为多继承容易带来安全隐患,当多个父类中定义了相同函数,但函数内容不同时,子类对象不确定要进行哪一个。但是java保留这种机制,并用另一种体现形式来完成表示,多实现。
(3)子类只能继承父类非私有的成员变量和成员方法,只能通过get()和set()方法或者用父类的带参构造访问
(4)当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容:
(a)父类中的私有方法不可以被重写
(b)子类方法访问权限一定要大于或等于父亲的方法权限
(c)静态的方法只能被静态方法重写
体现
//子类覆盖父类示例 class Fu2 { void show() { System.out.println("show1"); } } class Zi2 extends Fu2 { //子类覆盖父类内容并拓展自身内容 void show() { System.out.println("show2"); System.out.println("show3"); } } class ExtendsDemo2 { public static void main(String[] args) { Zi2 z=new Zi2(); z.show(); } }
4,this与super
This:
代表本类对象的引用
Super:
代表父类的内存空间的标识(可以理解为父类的对象引用)
当子父类出现同名时,使用super
注意:
(a)子类的所有的构造函数,默认都会访问父类中空参数的构造函数,因为子类中每一个构造函数的第一行都有一句隐式语句super()
(b)当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。当然,子类的构造函数第一行也可以手动指定this语句访问本类中的构造函数
体现
//子父类中的构造函数示例 class FuStudent { private String name; FuStudent() { System.out.println("学习"); } FuStudent(String name) { this.name=name; System.out.println("name="+this.name); } } class ZiStudent extends FuStudent { ZiStudent() { //super(); System.out.println("运动"); } ZiStudent(String name) { super(name); } } class ExtendsDemo3 { public static void main(String[] args) { ZiStudent z=new ZiStudent(); ZiStudent z2=new ZiStudent("李四"); } }
5,final关键字
(a)是最终的意思,它可以修饰类,修饰成员方法,成员变量
(b)它修饰的成员方法,是不可以被子类重写的
(c)它修饰的类不能被继承
(d)它修饰的成员变量,其实是一个常量,规范全大写,单词间由”_”连接
(e)内部类只能访问final修饰的局部变量
——- android培训、java培训、期待与您交流! ———-