封装性-继承性-多态性-抽象性

封装性(隐藏与封装)

问题:

当创建了类的对象后,如果直接通过“对象.属性”的方式对对应的对象属性赋值的话,可能会出现不满足实际情况的意外

我们考虑不让对象直接作用属性,而通过“对象.方法”的形式,来控制对象对属性的访问。实际情况中,对属性的要求就可以通过

方法来体现。

解决的办法:

(封装与隐藏的思想)1. 将类的属性私有化,2. 提供公共的方法(getter&setter)类实现。

作用:是赋值,拿值

 提供公共的方法(getter&setter)方式:

ctrl+alt+s,打开source菜单栏,可以创建Generate Getter&Setter方法

也可以通过该方法创建有参构造器和无参构造器

继承性

  1. 通过 class  S    extends  P   来实现类的继承
  2. S是子类 ,P是父类(S继承P)
  3. 子类继承父类后,父类中声明的属性、方法,子类都可以获取到。
  4. 明确:当父类中有私有的属性或方法时,子类同样可以获取到,只是由于封装性的设计,使得子类不可以直接调用罢了
  5. 子类除了通过继承获取父类的结构外,还可以定义自己特有的成分(属性和方法)。
  6. extends:继承。子类对父类功能的扩展,明确,子类不是父类的子集。(子类的范围可以大于父类的范围)
  7. java中、类的继承只支持单继承,一个类只能继承一个父类。反之,一个父类可以有多个子类,子父类是相对的概念。

上方的Student空参构造器中的super();会去自动调用父类中的Person空参构造器,并且这里的super:(),可以省略,但他执行步骤不能少。

多态性(可以理解为一种事物的多种形态。)

多态的使用前提:

1. 要有类的继承   

2. 要有子类对父类方法的重写

java中的多态主要是指子类对象的多态性,也就是说父类满足不了子类的需求,需要重写方法,在子类中重写方法,左边会显示绿色△三角形图标)

向上转型:(也就是装箱)

1. 子类的对象赋给父类的引用,父类的引用指向子类的对象

2. 对于多态来说:编译的时候看“左边”,运行的时候看“右边”。

向下转型:(也就是拆箱)

3. 当子类对象赋给父类的引用后,父类的引用只能调用父类的方法,不能调用子类中特有的方法,如果想调用子类中特有的方法,必需把父类的引用向下转型(“拆箱”)。

4. 如果把一个子类向上转型,转成一个父类的对象,然后把对象向下转型,一不小心把对象转成了其它子类的对象;此时编译不会报错,但运行会报错。

判断他是否能向下转型

语法:

if( 对象名 instanceof 子类){

}

抽象性(abstract)

abstract修饰类:

abstract修饰类后,此类不能被实例化(也就是不能创建对象),即不能调用此类里的方法。

抽象类有构造器(凡是类都有构造器)

可以被继承,子类继承抽象类,并重写了所有的抽象方法,则此类是一个"实体类",即可以被实例化。

子类继承抽象类,没有重写所有的抽象方法,意味着此类中任然有父类中的抽象方法,则此类必需声明为抽象的。

abstract修饰方法:

abstract修饰方法后,此方法就是一个抽象方法,抽象方法是没有“方法体”的。(抽象方法只能在抽象类中,而抽象类中可

以没有抽象方法)

抽象方法只能保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写次抽象方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值