浅学JAVA继承

浅学JAVA继承

在继承中,可以表示为is-a的关系
比如在Animal这个父类中:
cat:cat is an Animal
dog:dog is an Animal

在java的继承中,关键字是:extends

继承的优点:
1.避免代码重复
2.加强父类
缺点:耦合太高
public class Animal
{
    private String action;

    public void eat()
    {

    }
}

public class Dog
{
    private String action;

    public void eat()
    {

    }
}

public class Cat
{
    private String action;

    public void eat()
    {

    }
}  

在不使用继承的情况下,会和上面一样,代码重复,出现冗余的情况。这时,作为子类的DogCat继承起父类Animal,便可以解决这种冗余。
如:
public class Dog extends Animal {} 
public class Cat extends Animal {} 
public class Animal
{
    public Animal()
    {
        System.out.println("这是一个动物!");
    }
}


class Dog extends Animal
{
    public Dog()
    {
        System.out.println("这是一只狗!");
    }
}

class Test {
    public static void main(String[] args)
    {
        Animal a = new Dog();
        //用is-a来理解
        //Animal a is Dog(倒过来看,狗是动物)
        //如果:Dog b = new Animal();(会报错:不兼容的类型)
    }
}

LMQM1s.png

向下转型与向上转型(接上述代码)
1.子类转父类(向上转型)
  1)无需强转
  2)当父类中定义某方法,子类中未定义时,默认执行父类的方法,如果子类中定义同名同参数的方法,即为对父类的覆盖,最终执行子类的方法
2.父类转子类(向下转型)
  需要强转:Dog b = (Dog)new Animal();
  强转后会导致精度损失,(在只改动上面这行代码)如下图:

LMYqeA.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值