一.封装
封装的目的:保证属性安全
封装的特点:隐藏实现的细节,提供操作的接口
java如何实现封装:
一般先将需要封装的属性设为private类型
private String name;
设为private类型后只有本类可以进行访问和使用
如果想要别的类对这个私有类型的属性进行访问,就需要提供公开的方法(set和get方法)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
setName方法用获得参数来为name赋值
getName方法则返回一个name值来供别的类的方法使用
setName方法也可以用来限制值,比如名字的长度最多为3,如果给name赋的值的长度超过3,则由程序给他赋一个张三的值
public void setName(String name) {
if(name.length()>3){
this.name="张三";
}else{
this.name = name;
}
}
二.继承
继承的目的:减少代码量,便于维护
继承需要符合is-a关系
继承主要使用extends关键字实现
class 父类{
}
Class 子类 extends 父类{
}
子类会继承父类所有可以被继承的东西,其中包括公开的属性和方法
子类不会继承的东西有:父类使用private修饰的属性和方法,父类的构造方法
1.方法重写
方法重写的规则:方法名相同,参数列表相同,子类的访问权限不能严于父类
@Override关键字表示下面的方法是重写父类的
子类重写父类方法的例子
class 父类{
public void show(){
System.out.println("父类的方法");
}
}
Class 子类 extends 父类{
@Override
public void show(){
System.out.println("子类的方法");
}
}
调用子类的show方法最后的输出结果是:
子类的方法
使用关键字super来访问父类的构造方法,super只能放在方法和构造方法里面,且必须放在第一行super不能访问子类的私有成员
class 父类{
public 父类(){
System.out.println("父类的构造方法");
}
}
Class 子类 extends 父类{
public void show(){
super();
}
}
调用子类的show方法最后的输出结果是:
父类的构造方法
2.方法重载
方法重载:同一个类,方法名相同,参数不同(类型,数量,顺序)
public void show(){
}
public void show(String name){
}
public void show(int age){
}
三.多态
多态性是对象多种表现形式的体现
多态的三个必要条件:
1.子类必须继承父类
2.子类必须重写父类
3.父类的引用指向子类的对象
Class 父类{
public void show(){
System.out.print("父类的方法);
}
}
Class 子类 extends 父类{
@Override
public void show(){
System.out.print("子类的方法);
}
}
main方法中的代码
public static void main(){
父类 a=new 子类();
a.show();
}
输出结果是:
子类的方法
多态的优点:灵活,简单,可替换
抽象方法
抽象方法只能存在与抽象类中,抽象方法和抽象类都使用abstract修饰
抽象方法的特点:
- 子类继承了抽象类后必须重写抽象方法
- 抽象方法没有方法体
- 抽象方法必须放在抽象类和接口中
- 不能使用private,final,static 关键字
抽象类的特点:
1:使用abstract 进行修饰
2:抽象类不能被实例化
3:抽象类当中有构造方法,抽象方法,普通方法
4:子类必须重写父类的抽象方法,如不能实现继续抽象
5:不能使用 final 关键字
接口
接口需要用到的关键字:interface
类与类之间的关系:
子类——父类:继承关系
子类——接口:实现关系
类的属性为一个的对象:依赖关系
在一个类当中实例化另一个类的对象:关联关系
实现关系:
类继承一个父类,实现多个接口,
接口可以继承多个接口
类——类:单继承
类——接口:多实现
接口——接口:多继承
接口当中所有的方法为公共抽象方法
接口当中所有的书写为公共静态常量
接口和抽象类的异同点:
共同点:
1:都有抽象方法
2:都不能实例化对象
3:派生类都必须重写抽象方法
不同点:
1:继承父类关键字extends
实现接口的关键字implements
2:单继承,多实现
3:抽象类当中有普通方法,抽象方法
接口当中默认公共抽象方法