学习笔记之面向对象中(一)

面向对象编程三大特征

面向对象编程有三大特征:封装、继承和多态。

面向对象编程-封装

封装介绍

封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
封装的和好处

1)隐藏实现细节
2)提可以对数据进行验证,保证安全合理

如何体现封装

1)对类中的属性进行封装
2)通过成员方法,包实现封装

封装的实现步骤

1)将属性进行私有化
2)提供一个公共的set方法,用于对属性判断并赋值
public void setXxx(类型 参数名){
//加入数据验证的业务逻辑
属性 = 参数名;
}

3)提供一个公共的get方法,用于获取属性的值
public XX getXxx(){ //权限管理
return xx;
}

面向对象编程-继承

基本介绍

继承可以解决代码复用,让我们的编程更加靠近人类思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类(比如刚才的Student),在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends语句来声明继承父类即可。
示意图
在这里插入图片描述

继承的基本语法

class 子类 extends 父类{
}
1)子类就会自动拥有父类定义的属性和方法
2)父类又叫 超类,基类。
3)子类又叫派生类。

继承给编程带来的便利

1)代码的复用性提高了
2)代码的扩展性和维护性提高了

继承的深入讨论/细节问题

1)子类继承了所有的属性和方法,只是私有的属性不能直接访问,需要通过公共的方法去访问【debug代码验证可以看到】
2)java所有类都是Object类的子类, Object 类是所有类的基类
在这里插入图片描述
3)当创建子类时,语法规定不管你使用子类的哪个构造方法,默认情况下总会去调用父类的无参构造函数
4)如果父类没有提供无参构造函数,则必须在子类的构造函数中用 super 去指定使用父类的哪个构造函数完成对父类的初始化工作,否则,编译不会通过,具体形式为super(实参列表)
5)super在使用时,需要放在方法体的第一句位置。
6)super() 和 this() 都只能放在构造方法句首,因此这两个方法不能共存在一个方法中

7)父类构造器的调用不限于直接父类!将一直往上追溯直到Object类
在这里插入图片描述
8)子类最多只能继承一个父类(指直接继承),即java中是单继承机制。
思考:如何让A类继承B类和C类? 【A 继承 B, B继承C】
9)不能滥用继承,子类和父类之间必须满足 is-a 的逻辑关系
Person is a Music?
Person Music
Music extends Person 错误

Animal is a Cat ?
Cat extends Animal 正确

额外知识

class A{
A(){ System.out.println(“a”); }
A(String name) {System.out.println(“a name”);}
}
class B extends A{
B(){ this(“abc”); System.out.println(“b”);}
B(String name){System.out.println(“b name”);}
}
main方法中: B b=new B(); 会输出什么?
//a, b name, b [√]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值