关于JAVA类的继承

来源:互联网 发布:手机淘宝官网怎么找 编辑:程序博客网 时间:2024/05/23 16:35

继承是JAVA语言的四大特点之一(其余分别为封装、抽象、多态)。继承,顾名思义,子类将继承父类的属性与方法,当子类被调用时,可以调用到这些属性或方法。

1、继承的方法与特点
如果想声明一个类继承另一个类,要使用extends关键字。这样,子类就可以继承父类的属性和方法(包外、private的情况稍后说明),即使在子类中没有定义的方法,只要其存在于父类中,就可以使用子类的对象对此方法进行调用。
2、继承的好处
对于继承类的设置,继承的子类会继承父类的一些属性与方法,这样就不用重新在子类定义。大大的挺高了工作效率。即使是其他类,调用子类的方法,也可以调用到父类的属性或方法。
3、关键字对属性或方法被调用的影响
不是父类的所有属性或方法都会被子类所调用,当父类属性或方法的关键字不同时,能够继承到的范围也不同。
(1)public是公有类型,设置为共有类型的属性或方法,子类可继承其属性或方法,无论子类是否在同一个包内。当然包外的其他类都可以进行调用,包内更不必说。
(2)protected是保护类型,保护类型的使用频率较少,保护类型的属性或者方法可以使用子类进行继承调用。但是在其他包的类无法调用到父类与子类的属性或方法。在同一包内的类可以调用到其属性或方法。
(3)默认类型(即不对属性或变量设置关键字)默认的类型并不是默认为公有类型public,默认类型也是有继承或者调用的范围的。未定义类型的属性或者方法只能够被本包的子类所继承,在当前包内进行调用。不是当前包的类无法对其进行继承或者调用。
(4)private是私有类型,私有类型的属性或者方法无法被子类所继承,也无法被其他类所调用,只能够在当前的类中进行调用。
4、关于被继承的父类的构造方法
在创建子类的对象时,Java虚拟机首先执行父类的构造方法,然后再执行子类的构造方法。在多级继承的情况下,将从继承树的最上层的父类开始,依次执行各个类的构造方法,这可以保证子类对象从所有直接或间接父类中继承的实例变量都被正确地初始化。构造函数不能继承,只是调用而已。创建有参构造函数后,系统就不再有默认无参构造函数,如果没有任何构造函数,系统会默认有一个无参构造函数。
5、final、super和this
(1)当父类的方法或属性被关键字final修饰时,表示此属性或者方法不可被更改,也就是说子类的对象无法对被final修饰的属性或者方法的值进行调用后的重写。当final修饰变量时,此变量只能够赋值一次,一旦该变量被赋值,其值无法被改变。
(2)super关键字的作用是:当子类重写了父类的方法时,可以使我们访问到被重写的父类的方法。这一部分文字比较难描述,上代码!
class Animal{
String name="动物";
void shout(){
System.out.println("动物发出叫声");//定义动物叫的方法
}
}
class Dog extends Animal{
String name="犬类";
void shout(){
super.shout();//重写父类的shout()方法
}
void printName(){
System.out.println("name"+super.name);//访问父类成员变量
}
}
测试类略,测试类中创建dog对象调用shout和println方法。
结果为:  动物发出叫声
name=动物
printName方法中使用super.name调用父类的成员变量,没有使用子类的成员变量。
(注意:调用super() 父类构造函数的时候只能调用在子类构造函数的第一行
(3)this关键字可以明确的去访问类的成员变量。调用当前类的对象的变量或者方法。需要注意的是:
a:只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用。
b:在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次。
c:不能在一个类的两个构造方法中使用this相互调用。
d:this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
6、结语
类的继承思想是java中面向对象的思维方式,通过对于类的继承,我们可以清楚的分辨出类与类之间的关系,也能够是每个类作为一个对象被我们所使用,可以使面对对象编程的思想巩固给初学者。而且在大型程序的制作中,类之间的关系可以被分的十分清晰。总而言之,类的继承是java语言的一项优势。
0 0