回顾:
OPP三大特性
继承(inhiretance):子类可以拥有父类的属性和方法,让类的定义更加简单,从而提高效率;
语法:
class 子类 extends 父类{
}
什么能被继承,什么不能被继承:
1.属性和方法能被继承,构造方法不能被继承;
2.子类的构造方法中一定要先调用父类的构造方法,如果不显示调用,则编译器会生成一个super();
重写:
子类新方法覆盖父类原方法,要求方法名相同,参数也相同,方法体可自定义;
易记三句话:
1.父类有的,子类一定有;
2.父类没有的,子类可以添加;
3.父类有的,子类可以改;
关键字:super
两种用法:
1.super.属性,super.方法;
2.super();//放在子类构造方法的第一行;
多态(polymorphism):同一类事物可以拥有多种不同的形态;
反映到代码:父类的引用可以指向子类的对象;
优点:扩展性高;
缺点:
语法: Person p = new Student();
p = new Teacher();
其中有两个类型:
编译时类型:编写代码时确定的类型;
运行时类型:运行代码时才确定的类型;
强制转换,别名造型(downCast):
if(p instanceof Student){
(Student)p.Study//即可强制转换类型,并调用子类中的方法;
}
如果p的运行时类型是Student,则不能强制转换为其他类型,如(Teacher)p.Teach//编译失败;
一、封装
封装(encapsulation):封装指的就是信息隐藏,即把内部的结构和数据封装起来,让信息更安全,让外部访问都不需要理解过多的细节;
二、java中关于封装的体现
1.类本身就是一个封装体,它封装属性和方法;
2.方法本身也是一种封装,它封装的是功能代码;
3.可以通过访问修饰符来控制访问级别;
三、访问修饰符
种类:
public:公共的:所有包都能访问;
protected:受保护的:可以在本包内访问,外包内继承proteced的子类也可以访问;
default(系统默认):默认的,可以在本包内访问;
private:私有的,只能在原本的类内访问;
作用:控制访问的级别;
用法规则:
一般来说,方法都定义成public的,属性都定义成private的,可以通过set和get方法来访问属性;