Java笔记:封装、继承和多态

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

一、封装

1、什么是封装
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

2、封装的好处:
1)只能通过规定方法访问数据,保证了类内部数据结构的完整性
2)隐藏类的实现细节
3)方便加入控制语句
4)方便修改实现

3、封装的步骤
1)修改属性的可见性(设为private)
2)创建公有的getter/setter方法(用于属性的读写 )
3)在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断 )

4、this关键字的用法
this代表当前对象
1)调用属性
2)调用方法
3)调用构造方法(如果使用,必须是构造方法中的第一条语句 )
this();调用无参构造

二、继承:关键字extends

符合is-a关系的设计使用继承
继承是代码重用的一种方式(将子类共有的属性和行为放到父类中)

1、使用继承步骤
1)编写父类
class Pet {
//公共的属性和方法
}
2)编写子类,继承父类
class Dog extends Pet {
//子类特有的属性和方法
}

Java支持单继承,一个类只能直接继承一个父类

2、子类访问父类成员 (使用super关键字,super代表父类对象)
1)访问父类构造方法:在子类构造方法中调用且必须是第一句
super();
super(name);
2)访问父类属性
super.name;
3)访问父类方法
super.print();
super关键字来访问父类的成员
super只能出现在子类的方法和构造方法中
super调用构造方法时,只能是第一句
super不能访问父类的private成员

3、不能被继承的父类成员
1)private成员
2)子类与父类不在同包,使用默认访问权限的成员
3)构造方法
4、多重继承关系的初始化顺序
父类属性->父类构造方法->子类属性->子类构造方法

5、方法重写
方法重写的规则
1)方法名相同
2)参数列表相同
3)返回值类型相同或者是其子类
4)访问权限不能严于父类
方法重写与方法重载比较:
这里写图片描述

三、抽象类和抽象方法(限制实例化)

关键字abstract
1、抽象类
public abstract class Pet {
}
2、抽象方法
public abstract void print();
abstract也可用于方法——抽象方法
抽象方法没有方法体
抽象方法必须在抽象类里
抽象方法必须在子类中被实现,除非子类是抽象类

3、final修饰符
1)final修饰的类,不能再被继承
2)final修饰的方法,不能被子类重写
3)final修饰的变量将变成常量,只能在初始化时进行赋值

四、多态

1、什么是多态(父类引用指向子类对象 )
多态:同一个引用类型,使用不同的实例而执行不同操作

2、实现多态
(1)实现多态的三个要素:
1)编写具有继承关系的父类和子类
2)子类重写父类方法
3)使用父类的引用指向子类的对象(向上转型)
(2)实现多态的两种形式
1)使用父类作为方法形参实现多态
2)使用父类作为方法返回值实现多态

五、对象类型的转换

1、向上转型(自动类型转换)
将子类对象看作是父类对象被称为“向上转型”
2、向下转型(强制类型转换)
向下转型是将较为抽象的类转换为较具体的类
使用向下转型时,必须使用显示类型转换,向编译器指明将父类对象转换为哪一种类型的子类对象

3、instanceof判断对象类型
当在程序中执行向下转型时,如果父类对象不是子类对象的实例,就会发生ClassCastException异常,所以在执行向下转型之前需要判断父类对象是否为子类对象的实例。这个判断通常使用instanceof操作符来完成。可以使用instanceof操作符判断是否一个类实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。
语法格式
myobject instanceof ExampleClass
->myobject:某类的对象引用
->ExampleClass:某个类
使用instanceof操作符的表达式返回值为布尔值。如果返回true,说明myobject对象为ExampleClass的实例对象,如果返回false,说明myobject对象不是ExampleClass的实例对象

instanceof通常和强制类型转换结合使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值