面向对象OOP(8.10)

一,继承

1,一个类可以通过关键字extends来继承另一个类:继承的语法classA extendsclassB;其中A类叫做子类(subclass),衍生类或派生类;B类叫做父类(superclass),超类,基类;

2,继承的特点:

- 如果多个类中有相同的代码,那么可以将相同的代码写在同一个类当中,这个类就是父类;再去继承这个类可以减少重复的代码;

- 子类可以访问父类中非私有的属性和方法;

- 子类对父类中的方法进行拓展和覆盖叫做对父类方法的重写,重写之后,子类再调用这个方法的时候就是调用重写之后的;

- Java中时单继承,一个子类只能有一个父类,一个父类可以有多个子类;

- Java中可以实现多重继承:A可以继承B,B继承C,这样A就可以访问C中的属性和方法,这样就实现了多重继承;

- 任何类都是object的子类;

- 在创建子类对象的时候先执行父类中相应的构造方法;当父类中的构造方法重载的时候,默认的构造方法就会失效,这是子类就会报错,这是就需要在子类构造方法中使用super调用父类中的构造方法;

- 在使用extend的时候:

public class father(){
father(){

}//每个类都会有一个默认的无参构造方法,并且是不显示的;
}

public class son extends father(){
son(){
father(){//会自动调用父类的构造方法;
}
}
}

3,多重继承不是多继承:多重继承是子类可以访问父类的父类,但还是只有一个父类;而多继承是一个子类可以拥有多个父类;

4,重写和重载:

        - 重写:重写是把父类的方法在自己的方法体内进行拓展和覆盖,两者的关系是必须在父子关系的类中在两个不同的类;重写要求返回值,方法名和参数列表(方法三要素),必须相同,访问修饰符不能比父类的范围更小,抛出的异常不能比父类范围更大;

        -重载:要求必须在同一个类中,方法名必须相同,参数列表(参数的个数和参数的类型)必须不同,方法名必须相同;

5,this和super:都可以当作对象和构造方法使用;

this:

        -this当对象使用:用来调用当前类的属性和方法:this.属性;this.方法;但是只能在方法中使用;

        -当构造方法使用,必须是在另一个构造方法的第一行才能使用;否则会报错:Call to 'this()' must          be first statement in constructor body;

super:

        -super当构造方法使用的时候,只能在子类构造发方法中的第一行;

        -super当对象使用的时候,可以用来调用父类中的非私有方法和属性;

6,访问修饰符:

private:私有的,修饰内部类,属性和方法,表示被修饰的对象只能本类中访问;

default:默认的,修饰类,方法和属性,表示被修饰的对象只能被同一个包中的类访问;

protect:受保护的,修饰内部类,方法和属性,表示被修饰的对象,只有其不在同一个包中的子类才能访问,其他情况只能在同一个包中的才能访问;

public:公开的:修饰类,方法和属性;表示被修饰的对象在同一个工程当中可以访问;

其中default和protect的区别为:default只要是不同的包,任何情况都不能进行访问,protect在不同包中的子类可以进行访问;在同一个包中的时候,效果相同;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值