两个例子看懂封装和继承
第一节 封装生活中的封装: 电视机,空调,ATM机1.1 什么是封装 封装,即隐藏对象的属性和实现细节,仅对外公开接口(方法/函数),控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中属性数据和函数都是类的成员。 封装的目的:是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是
第一节 封装
生活中的封装: 电视机,空调,ATM机
1.1 什么是封装
封装,即隐藏对象的属性和实现细节,仅对外公开接口(方法/函数),控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中属性数据和函数都是类的成员。
封装的目的:是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
1.2 java中的封装
广义来说:一切公共代码的抽取都可以叫封装。
一般体现在公共方法的封装。工具类。
狭义来说:隐藏对象的属性和实现细节。
- 将属性私有化 ,使用private关键字修饰。
- 为使用private关键字修饰的属性添加 getter和setter方法。通过get和set方法来操作属性。
- 在setter方法中,添加数据的逻辑校验。
[权限修饰符] class 子类名 extends 父类名{}
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("年龄超出范围");
}
}
}
//测试方法
public class Test {
public static void main(String[] args) {
Student s=new Student();
s.setName("张三");
s.setSex("石头");
s.setAge(-20);
s.show();
}
}
1.3 封装的作用
保护属性的有效性。
第二节 继承
2.1 什么是继承
继承是面向对象软件技术当中的一个概念,与多态、封装共称为面向对象的三个基本特征。继承可以使得子类具有父类的非私有属性和方法或者可以重新定义、追加属性和方法等。
继承(英语:inheritance)。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
如果某类B“继承”另某类A,就把这个B称为“A的子类或派生类(subclass)”,而把类A称为“B的父类”也可以称为“A是B的超类或基类(superclass)”。
2.2 为什么需要继承
提升代码的可重用性
- 子类通过继承可以得到父类有的内容
能够扩展功能
- 通过继承,子类可以扩展父类已有的功能
方便维护
- 多个子类都继承了父类的某个功能,当功能需要修改时,只要修改父类的这个功能即可
使用面向对象思想编程的时候,需要考虑的两个方面:
1.功能实现了没有?
2.后期维护方便吗?
2.3 继承的语法格式
java语言是单继承的,java类只能由一个父类。
继承的语句格式:
[权限修饰符] class 子类名 extends 父类名{}
// 定义父类
public class Father {
// 父亲有500w元
int money = 5000000;
public void liveHouse(){
System.out.println("住80年代老房子");
}
}
// 定义子类
public class Son extends Father{
}
public class Test {
public static void main(String[] args) {
Son son = new Son();
System.out.println("儿子有:"+son.money+"元");
son.liveHouse();
}
}
儿子有:5000000元
住80年代老房子
更多推荐
所有评论(0)