JAVA学习日志——继承性

我们已经了解过了类和对象,那么如果有多各类拥有一样的属性和方法时,这个时候人们就开始考虑如何能够增强代码的复用性来使代码更为简化。毕竟我们程序员都是懒人啊,对于我们来说,能少些写代码就绝对不会多写。这个时候我们就引出了继承性这个概念。
就像一些孩子可以拥有父亲的特点一样,我们就引申出来了父类和子类的继承关系。父类具有的非私有访问模式的属性和方法可以继承到子类中,而子类又可以增加自己的属性和方法。这样就可以减少代码的冗余。
具体继承方法如下:

class 父类{
类体;
}

class 子类名 extends 父类名{
子类体;
}
/**
 * 
 * @author Lnd Niu
 *创建父类手机iphone1
 *具有颜色尺寸等属性和打电话的功能
 */
public class IPhone {
    String color;
    String size;

    void tellPhone(String num)
    {
        System.out.println("打电话给:"+num);
    }

}
/**
 * 
 * 
 * @author Lnd Niu
 *定义子类IPhone2 它具有父类的所有属性和方法 另外还有自己的功能发短信
 */
public class IPhone2 extends IPhone1{

    void text(String num,String img)
    {
        System.out.println("把短信"+img+"发送到"+num);
    }


}

也就是说尽管子类中没有写出父类的属性和方法,但是依旧包含父类的属性和方法。可以调用子类中的方法哦~

关键字this和super
如果对于父类和子类如果有相同的属性和方法那么应该如何区分使用呢?
我们可以使用this和super来进行区分。this指的是当前类的对象,super指的是当前类父类的对象。如果想要在子类中引用父类的属性值就可以通过super来实现。

this.当前对象的属性;
this.当前对象的方法名();
super.父类的属性;
super.父类的属性名();

我们再来说一下父类和子类的类型转换。我们在创建实例对象时,可以创建上转型对象和下转型对象。“子转父为隐,父转子为显”

由子类型转为父类型是隐式转换。也就是不需要强制类型转换,可以直接转换。
由父类型转换为子类型是强制类型转换。

子类实例化的对象赋值给父类声明变量,则该对象称为上转型对象,这个过程称为对象上转型,对应于数据类型转换中的自动类型转换(也叫隐式转换)。
上转型对象不能操作子类新增的成员变量;不能调用子类新增的方法:
上转对象调用父类方法,如果该方法已被子类重写,则表现子类重写后的行为特征,否则表现父类的行为特征。
使用上转型对象调用成员变量,无论该成员变量是否已经被子类覆盖,使用的都是父类中的成员变量:

下转型对象:
可以将上转型对象再强制转换为创建该对象的子类类型的对象,即将上转型对象还原为子类对象,对应于数据类型转换中的强制类型转换。
还原后的对象又具备了子类所有属性和功能,即可以操作子类中继承或新增的成员变量,可以调用子类中继承或新增的方法。
注意:不可以将父类创建的对象通过强制类型转换赋值给子类声明的变量。

我们可以在创建实例对象的时候来使用。
比如:有一个子类是iPhone2.它的父类是iPhone2

上转型对象:
IPhone2 iphoneShang=new IPhone1();

下转型:
IPhone1 iphoneXia=(IPhone1)iphoneShang;

猜你喜欢

转载自blog.csdn.net/Lnd_Niu/article/details/81671213
今日推荐