JavasSE面向对象-继承

继承也是面向对象的三大特性之一
继承的概念
在Java中继承就是指的子类和父类,一个向上抽象的过程,把更大的范围抽象成为更大的类,举个例子:
在人中分为男人和女人,但是他们都属于人,人都有名字和年龄,这里就可以抽象成为父类,而人都会吃饭,这就是父类的共同方法,而人类又有自己的独特的行为,所以这里可以称之为子类,当我们使用的时候,直接继承父类的特有方法,也就是共同属性,就可以不必在每个类再重复写名字和方法了。这就是我理解的继承

class A//父类
{
    int age;//年龄
    String name;//姓名
    //共同方法
    public void eat(){
    System.out.println("人在吃饭");
    }

}
//继承  extends
class B extends A
{
    //因为继承至父类,所以不需要再重写姓名和年龄还有吃饭的方法
    public void run(){
    //人类特有的方法
    System.out.println("人在跑步");
    }
}

这就一个简单的继承,其中extends是代表继承的关键字
1.继承是Java中实现代码重用的重要手段之一
2.Java只支持单继承,一个类只能有一个直接父类
3.如多一个类没有继承,那么他的默认的类是object,object是所有类的祖先

子类可以从父类中继承的东西:
4.private无法继承
5.构造方法无法被继承
6.final修饰的属性不能被继承
7.抽象方法不能被继承
6.继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里。
7.继承 public 和 protected 修饰的属性和方法,不管子类和父类是否在同一个包里。
重写
在一个父类中,父类的方法如果不能满足子类的需求,那么子类就可以对父类的方法进行覆盖
重写注意点:
1.重写方法和被重写方法必须具有相同的方法名。
2.重写方法和被重写方法必须具有相同的参数列表。
3.重写方法的返回值类型必须和被重写方法的返回值类型相同或者是其子类。
4.重写方法的不能缩小被重写方法的访问权限。

//父类
class A
{
//父类方法
public void eat()
{
    System.out.println("人在吃饭");
}
}
//子类
class B
{
    public void eat()
    {
        //重写
        System.out.println("我在跑步");
    }
}

super关键字
super代表的是对当前对象的直接父类对象的默认引用,在子类中可以通过super来访问父类中的成员,其实就是调用父类的方法,当子类出现super的时候,意思就是告诉你你应该去父类去找这个属性

注意点:
1.super必须出现在子类中,可以访问父类的属性,方法个构造函数
2.super无法访问private成员
拿上面的举个例子

//父类
class A
{
//名字属性
int age;

//父类方法
public void eat()
{
    System.out.println("人在吃饭");

}
}
//子类
class B
{
    //调用父类年龄
    super.age;
    //调用父类方法
    super.eat();
}

继承之中还有一个构造方法,这里就只说一下在构造方法的注意点:

1.如果子类的构造方法中没有通过 super 显式调用父类的有参构造方法,也没有通过this 显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。在这种情况下,写不写”super();”语句,效果都是一样的。

2.如果子类的构造方法中通过 super 显式调用父类的有参构造方法,那将执行父类相
应构造方法,而不执行父类无参构造方法。

  1. 如果子类的构造方法中通过 this 显式调用自身的其他构造方法,在相应构造方法中
    应用以上两条规则。

  2. 特别注意的是,如果存在多级继承关系,在创建一个子类对象时,以上规则会多次向
    更高一级父类应用,一直到执行顶级父类 Object 类的无参构造方法为止。
    this和super的注意点
    1.this和super只能出现在第一条语句
    2.一个构造方法不能同时出现this和super关键字
    3.类方法中没有this和super
    4.实例方法中this和super没有第一条语句要求,可以共存

总结:继承这一章节,除了构造方法,其他的掌握的还行,构造方法也是刚刚写博客时发现不是很了解,所以没有过多的写继承中的构造方法,没有什么大的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值