目录
4.5super关键字(父类对象),this关键字(当前类对象)
1.数组及排序的回顾
- 数组的定义和使用
- 常见算法
2.本章内容
- 封装
- 继承
- super关键字
- 方法重写
- final关键字在继承中的作用
3.封装
生活中的封装: 电视机,空调,ATM机
3.1什么是封装
封装,即隐藏对象的属性和实现细节,仅对外公开接口(方法/函数),控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中属性数据和函数都是类的成员。
封装的目的:是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
3.2java中的封装
广义来说:一切公共代码的抽取都可以叫封装。
一般体现在公共方法的封装。工具类。
狭义来说:隐藏对象的属性和实现细节。
- 将属性私有化 ,使用private关键字修饰。
- 为使用private关键字修饰的属性添加 getter和setter方法。通过get和set方法来操作属性。
- 在setter方法中,添加数据的逻辑校验。
案例:
public class Student {
//属性封装:1.属性私有化 2.添加getter setter方法 3.在setter方法中进行数据校验
//姓名
private String name;
//性别
private String sex;
//年龄
private int age;
public void show(){
System.out.println(this.name+" "+this.sex+" "+this.age);
}
//生成getter setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
//在setter方法中对数据进行校验
if(sex.equals("男")||sex.equals("女")){
this.sex = sex;
}else{
System.out.println("性别无效");
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age>0 && age<120){
this.age = age;
}else{
System.out.println("年龄超出范围");
}
}
}
package com.test3;
public class Test {
public static void main(String[] args) {
Student s=new Student();
// s.name="张三";
// s.sex="石头";
// s.age=-20;
s.setName("张三");
s.setSex("石头");
s.setAge(-20);
s.show();
}
}
1.3封装的作用
保护属性的有效性