Java面向对象三大特性:封装、继承、多态

Java面向对象三大特性:封装、继承、多态

封装 使用private等权限修饰符将类的属性隐藏,只提供给用户他们的访问方法,避免了逻辑错误的产生,也方便操作。在开发时,建议把所有属性都私有化,然后为每个属性编写get和set方法,这样做的好处是提高数据的安全性,避免逻辑上的错误。
关于权限修饰符,从高到低分别是public、protected、default、private;访问权限分别为:

同类同包子类不同包非子类
public
protected
default
private

继承 是指子类保留了父类的方法和属性,子类和父类是is a的关系。在设计时会把多个子类的共同属性放在父类中。子类保留了父类的方法属性,能通过super关键字访问父类的成员;在创建子类对象时,会先在堆里创建一个父类对象,再创建子类对象,super指向了父类对象所在的内存。
重写父类方法:要求参数列表、返回值完全一样,修饰符权限不能低于父类(public>protected>default>private);有static、final、private修饰的方法不能重写。

关于final关键字:
- final修饰变量,把它变常量
- final修饰属性,声明后该属性值不能修改
- final修饰类,不能被继承
- final修饰方法,不能被重写

static关键字用于修饰静态属性和静态方法:
静态属性是该类所有对象共有的,可以理解成是“类属性“,可以通过类直接调用;它只有一个,存在方法区里,类加载时一起被加载到方法区;是先于普通属性被加载的。同理,静态方法也是在类加载时就被加载到方法区。
静态成员是优先被创建的:
类加载(静态成员进入方法区)——对象创建(堆区存放对象的普通成员)
非静态的能调用静态的(因为可以确保在此之前静态的已经被创建)
但静态的不能调用非静态的(因为非静态的可能还没有创建)

多态 是指同一个引用类型,使用不同的实例可以执行不同的操作。比如将父类引用作为参数,但传入的是子类对象,这样就可以实现一个引用实现多种不同的操作。多态的条件是:继承、重写、父类引用指向子类对象。多态可以理解为一种动态绑定,在编写程序时我们不知道执行时到底是哪个子类调用该方法,就可以先指定为父类,在程序执行时动态地绑定具体的某个子类。下面以代码为例:
父类引用指向子类对象
比如把学生对象赋给Person对象p
Person p=null
Student s=new Student()
p=s
向上转型可以,向下要强制
Person p=null
Student s=new Student()
p=s
Student s2=(Student)p
在实际应用中,传参的问题,把子类对象作为实参传入
void say(Person p)……
p.say()
Stuedent s=new Student()
say(s)#这样由student类来实现person的say方法,如果再添加子类Nurse,也不需要修改say方法,只用传参数是传入Nurse类的对象即可
instanceOf
判断某个对象是否为某类的
if(p instanceOf Student)
doSomething……
else……

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值