Java是面向对象的语言
面向对象语言的三大特征: 封装、继承、多态。
继承的特点: 1、子类继承父类后,子类可以拥有父类的属性和方法(必须是权限范围内的类)
2、子类继承父类后,子类可以添加自己的属性和方法,但是父类不可以调用子类的属性和方法。
3、子类可以在权限范围内的类中重写父类的方法。
父类代码示例:
Public class People{Public String name;//姓名Public byte age;//年龄//有参构造器Public People(String name){This.name = name;}//无参构造器Public People(){}//普通方法Public void shopping(){System.out.println(“购物”);}Public void drink(){System.out.println(“喝茶”);}
子类代码示例:
//男人类 继承人类(People)Public class Man extends People{//子类添加自己的属性Public double salary;//工资Public Man(){Super(“胡海峰”);//父类的无参构造方法}//重写父类的shopping方法@OverridePublic void shopping(){Super.shopping();//super:父类的对象System.out.println(“一次美好的购物体验”);}
重载(Overload)与重写(Override)的区别:
| 权限 | 返回值类型 | 名称 | 参数 | |
|---|---|---|---|---|
| 重载(同一个类中的方法) | — | — | 一样 | 不一样 |
| 重写(有继承关系的两个类中) | 只能扩大不能缩小 | 必须一样 | 必须一样 | 必须一样 |
Java中的继承是单根继承,一个子类只能有一个直接父类。
默认创建的类继承Object,Object是所有累的父类(基类)。
Java中的权限修饰符:
| Public(公共的) | 在任何位置都可以使用 |
|---|---|
| Protected(受保护的) | 只能在同一包下使用,或者是子类中使用 |
| 缺省的(默认的) | 只能在同一包下使用 |
| Private(私有的) | 只能在当前类文件下使用 |
子类在重写父类方法时,可以修改权限修饰符,但只能扩大,不能缩小。
封装
封装就是将类的属性和行为结合成一个独立的相同单位,并隐藏类的内部细节,保证了程序和数据不受外部因素的干扰。
代码示例:private String name;//私有属性(即封装)
Private byte age;
要调用封装类,需要使用set get 方法,set是赋值方法,get是取值方法;
代码示例: public void setName(String name) {//给name赋值
this.name= name+”肛夫”;
}
//获取name属性
public String getName() {
return name;
}
属性是Boolean 类型时, 取值方法时is+属性名;
多态
多态的本质是指父类的引用可以指向子类的对象,反之则不可以;
格式:父类的变量 = 子类的对象;
Java多态有两个多态:1、静态多态,也叫编译时多态,通过方法重载实现;
2、动态多态,也叫运行时多态,通过对象的多态性实现
一个引用类型变量如果声明为父类的类型,但实际指向的是子类对象,那么该变量就不能在访问子类中独有的属性和方法;
当子类中重写了父类的方法,和父类拥有同名属性、方法时,方法将按照对象的运行时类型调用,属性将按照对象的声明时类型调用;
