java面向对象多态封装继承_java -- 面向对象的三大特性(封装,继承,多态)

一.封装

1.什么是封装?

把抽象的数据和对数据的操作封装在一起,隐藏变量的实现细节。数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行访问。

2.封装的步骤?

1.使用private 修饰需要封装的成员变量。

2.提供一个公开的方法设置或者访问私有的属性。通过(get/set)方法获取

3.封装的好处与作用?

封装的作用:1. 框架  2. 工具类

封装的好处:  1. 提高了数据的安全性   2. 操作简单   3. 隐藏了方法的实现。

二.继承

1.继承的格式?

A extends B

A: SubClass 子类

B:SuperClass,超类,父类,基类

2.封装的好处?

1.减少代码的冗余,提高代码的复用性  2.提高了代码的扩展性  3.为多态提供了前提

3.说明?

1.子类继承父类以后就拥有了父类中的属性和方法(我们不认为可以继承父类中的构造器)

2.子类继承父类一定要存在"is a"的关系

3.父类中属性被私有化后,子类不能直接进行访问,但是我们可以通过间接的方式进行访问(set/get),虽然父类中的属性不能被直接访问,但是我们还是认为该属性被继承到了。

4.子类除了可以继承属性和方法外,还可以在定义自己独有的属性和方法

5.父类的概念是相对的,父类分为:直接父类和间接父类

6.子类除了可以获取直接父类的属性和方法外,还可以获取间接父类的属性和方法

7.所有类都会继承Object类。如果一个类没有显示的继承某个类,那么这个类将默认继承Object类

8.一个父类可以有多个子类,但是一个子类只能有一个父类(Java的单继承特性)

4.方法的重写?

子类继承父类后,如果对父类中的方法不满意那么可以考虑使用方法的重写(覆盖,重写)

说明:

1.子类继承父类后,如果对父类中的方法进行了重写,那么在通过子类对象调用父类中被重写的方法,实际调用子类重写的方法。

细节:

权限修饰符 返回值类型 方法名(形参列表){

方法体

}

1.父类被重写的方法和子类重写的方法的方法名和形参列表必须相同

2.父类重写的方法的权限修饰符不小于子类重写方法的权限修饰符

父类被重写的方法的返回值    子类被重写方法的返回值    结果

Number            Number及Number的子类         可以

void             void             可以

int            double          不可以

3.子类方法抛出的异常不能大于父类被重写方法的异常

注意:

1.如果父类的方法被private修饰那么该方法不可以被子类重写

2. 如果和子类相同的方法,那么同时加static(不是方法的重写)要么不加static(是方法的重写)

4.@Override //注解:用来说明当前的方法是一个重写的方法

总结:super 和 this 的区别:

1.代表的事物不一样:

this:代表所属方法的调用者对象。

super:代表父类对象的引用空间。

2.使用前提不一致:

this:在非继承的条件下也可以使用。

super:只能在继承的条件下才能使用。

3.调用构造方法:

this:调用本类的构造方法。

super:调用的父类的构造方法

三.多态

1.多态性:一类事物的多种形态

2. 多态性的理解:

1.广义上:方法的重写,重载,子类对象的多态性

2.狭义上:子类对象的多态性

3.子类对象的多态性:父类的引用指向子类的对象

public classTest {public static voidmain(String[] args) {//父类的引用指向子类的对象

Person p = newWoman();//虚拟方法应用(动态绑定):编译看左边,运行看右边

p.eat();

p.show();//多态的缺点:不能调用子类中独有的方法和属性

/** 需求: 在多态的情况下如何调用子类中自己独有的方法和属性

* 向下转型*/Woman woman=(Woman)p;

woman.buy();//ClassCastException - 类型转换异常//因为P对象的本身就是一个Woman所以转成Man就会抛异常//Man m = (Man)p;//m.run();

/** 需求:如何防止类型转换异常

* a instanceof A: a 对象是否是A类型的一个实例。如果是返回true,否则返回false*/

if(p instanceofWoman) {

System.out.println("true");

}else{

System.out.println("false");

}

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值