面向对象,封装,继承,继承中构造方法的访问特点

面向对象
1.OOP的特点:封装encapsulation,继承inheritance,多态polymorphism
2.类的成员:成员变量、成员方法
(1)成员变量:定义在类中、方法外的局部变量。
(2)成员变量与局部变量的相同点和区别:
相同点:成员变量与局部变量的定义是相同的。
区别:
A.在类中的位置不同。成员变量的位置在类中方法外。局部变量在方法内或者方法声明上(形式参数)。
B.在内存中的位置不同。成员变量在堆内存。静态成员变量随着类的加载而加载,随着程序的结束而消失。局部变量在栈内存。
C.生命周期不同。成员变量随着对象的创建而存在,随着对象的消失而消失。局部变量随着方法的调用而存在,随着方法的调用完毕而消失。
D.初始化值不同。成员变量有默认值,可以不用初始化就可以说使用。局部变量没有默认值,必须先定义(即初始化)、赋值,最后使用。
(3)成员方法:与方法的定义相同,区别是成员方法去掉了修饰符的static关键字。
3.类的使用:就是使用该类的成员(成员变量和成员方法)。
要想使用一个类的成员,就必须先拥有该类的对象,即创建对象。
(1)格式:类名 对象名=new 类名();
(2)对象访问成员:A.访问成员变量:对象名.成员变量
B.访问成员方法:对象名.成员方法(…)

封装
1.基本概念
(1)把成员变量都用private修饰,对外提供public修饰的getXxx()、setXxx()方法。
(2)封装的原则:A.将不需要对外提供的东东都隐藏起来。B.把属性隐藏,提供公共方法对其访问。
(3)封装的好处:增加了代码的安全性和复用性。 弊端:牺牲了一些效率。 但是利大于弊,因为变量是不可控的,方法是可控的。
(4)方法中成员变量访问的原则:就近原则
(5)访问变量:局部变量.成员变量
2.this:代表所在类的对象引用,即代表当前的那个对象。谁调用的,this就代表谁。
(1)如果局部变量名和成员变量名称一致,在方法中使用的时候采用的是就近原则,所以用this。
(2)方法被那个对象调用,this就代表谁。
(3)使用场景:就是用于解决成员变量被隐藏的问题。(用在局部变量隐藏成员变量的情况,即局部变量与成员变量重名)
3.构造方法Constructor:用于给对象的数据进行初始化
(1)格式:
A.方法名和类名相同
B.没有返回值类型,连void都不能写
C.没有具体的返回值
D.构造方法可以重载
类名 对象名=new 构造方法名(…)
(2)构造方法的注意事项
A.如果我们没有给出构造方法,系统将给出一个默认的无参构造方法供我们使用。
B.如果我们给出了构造方法,系统将不再提供构造方法供我们使用。
C.构造方法也是可以重载的,一般的时候我们写构造方法写两个:空参构造方法、全参构造方法。
(3)给成员变量赋值的方法
A.setXxx()
B.构造方法
(4)构造方法的使用
给属性初始化:构造方法是在创建对象的时候给属性进行初始化,只能用一次。
用setXxx()方法进行初始化:当创建完对象后,再想修改属性值就需要用到setXxx()方法了。

继承
格式:public class 类名 extends 父类{}
1.构造方法不能继承。
2.开发的原则:高内聚,低耦合
高内聚:一个类或一个方法只完成一个功能,并且不依赖于其它的类或方法。就是自己完成某件事的能力。
低耦合:修改完一个方法后,其它的方法基本不需要动代码,维护起来很方便。类与类的关系尽量减少。
3.java中类的继承特点:(1)java中类只支持单继承,不支持多继承。(2)支持多层继承。
4.就近原则:成员变量名称相同时,在子类方法中访问变量,
(1)在方法的局部范围找,如果有就使用。
(2)在子类的成员范围找,如果有就使用。
(3)在父类的成员范围找,如果有就使用。
(4)如果还找不到,就报错。
5.this和super
(1)this代表本类对象的引用。super代表父类的存储空间,也可以理解为代表父类对象的引用。
(2)用法:
A.访问成员变量:this.成员变量。super.成员变量
B.访问构造方法:this(…) 调用本类的构造方法。super(…) 调用父类的构造方法
C.访问成员方法:this.成员方法。super.成员方法
6.java继承中构造方法的访问特点
(1)子类构造方法执行前,都会先执行父类的无参构造方法。因为子类会继承父类的成员方法,父类必须先初始化好了,子类才能继承。
(2)在子类的构造方法中,默认第一行有一条语句super(),即必须在构造方法的第一行。
如果子类没有写super(),系统会默认加上一条。如果我们写了构造方法,系统就不会给我们提供构造方法了。
问题:如果父类中没有无参构造方法,怎么办呢?
回答:A.在父类中添加一个无参构造方法。(推荐)B.可以通过super去访问父类的带参构造方法。
我们在写构造方法的时候,最好写上无参构造方法和全参构造方法。
7.java继承中成员方法的访问特点:也是就近原则
子类中方法和父类中方法的声明相同时(这叫方法的覆盖override),调用的是子类中的方法。
8.重载overload:在同一个类中出现的方法名相同的情况
覆盖override:子类中出现了和父类中一模一样的方法声明的情况
9.方法覆盖的注意事项
(1)@override注解 标记一个方法,表名该方法是覆盖父类的方法
(2)父类私有的方法不能被覆盖
(3)子类覆盖父类方法时,访问权限不能更低 private<默认修饰符friendly<protected<public
public:本类、别的包的类、本包的类
protected:本包中的类、其他包子类中
friendly:只能在本包中的类
private:只能在本类中
10.分析案例的时候是从子类分析到父类,写代码的时候是从父类写到子类。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值