欢迎来到天天文库
浏览记录
ID:59509860
大小:104.25 KB
页数:6页
时间:2020-11-04
《面向对象的三大特性(封装-继承-多态).docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一丶封装 1权限修饰符 可以用来修饰成员变量和成员方法,对于类的权限修饰只可以用public和缺省default。 被public修饰的类可以在任意地方被访问;default类只可以被同一个包内部的类访问。 权限由大到小:publicprotecteddefault(不写)private 被private修饰的成员只能在本类中访问,外界不能访问2set()/get()方法 (1)this关键字 a.可以用来调用变量,方法,构造方法; b.this.xx理解为调用当前类
2、的xx。 (2)成员变量和局部变量 1)在类中的位置不同 a:成员变量:在类中,方法外 b:局部变量:在方法声明上(形式参数),或者是在方法定义中 2)在内存中的位置不同 a:成员变量:在堆内存 b:局部变量:在栈内存 3)生命周期不同 a:成员变量:随着对象的创建而存在,随着对象的消失而消失 b:局部变量:随着方法调用而存在,随着方法的调用结束而消失 4)初始化值不同 a:成员变量:有默认值 b:局部变量:必须初始化值,否则报错!(在使用它之前,没
3、有初始化) (3)set()/get()方法 当成员变量被private修饰时,不在本类中无法直接访问,便需要set()/get()方法来解决这个问题3封装性 封装:是面向对象的第一大特性,所谓封装,就是值对外部不可见(一般而言被private修饰),外部只能通过对象提供的接口(如set()/get()方法)来访问。 封装的好处:a.良好的封装能够减少耦合; b.类内部的结构可以自己修改,对外部影响不大; c.可以对成员进行更精准的控制(防止出现与事实不符的情况); d.影藏实现细节。 注意:在开发中,
4、类的成员变量全部要进行封装,封装之后通过set()/get()方法访问。二丶继承extends 1实现:通过classZiextendsFu{}实现类的继承 (1)子类继承父类,父类中声明的属性,方法,子类都可以获取到; 当父类中有私有的属性方法时,子类同样可以获取到,由于封装性的设计,使得子类不能直接调用访问。 (2)子类除了可以继承父类的结构外,还可以定义直接特有的成员变量,成员方法; (3)Java中类的继承只支持单继承,一个类只能继承一个父类,父类可以有多个子类,但是可以多层继承; (4)子类不能继承父类的构造方法,可以
5、间接的通过super关键字去访问父类的构造方法(super();); 在子类的构造方法中如果没有显示的调用父类的构造方法,会默认调用父类的无参构造(所以最好父类都写有无参构造方法)。 子类继承父类的访问特点:首先父类进行初始化,然后子类进行初始化;多层访问! 2 方法的重写(区别重载) 子类继承父类以后,若父类的方法对子类不适用,那么子类可以对父类方法重写(override) 规则:1)要求子类方法的返回值类型方法名(参数列表)与父类方法一致; 2)子类方法的权限修饰符不能小于父类方法的修饰权限; 3)若父类方法抛异
6、常,那么子类方法抛的异常类型不能大于父类; 注意: a.当子类重写了父类的方法以后,可以用super.方法调用父类被重写的内容; b.子父类的方法必须同为static或同为非static。classFu{ privateinti; publicFu(){ //无参构造super();可以省略 super(); } publicFu(inti){ //有参构造 super(); this.i=i; } publicvoidseti(inti){ this.i=i; } publicintgeti(){ returni; }
7、publicvoidshow(){ System.out.println("这是父类"); }}classZiextendsFu{ publicZi(){ //无参构造 super(); } publicZi(inti){ //有参构造,这块的super就不能省略 super(i); } @Override //重写了父类中的show()方法 publicvoidshow(){ System.out.println("这是子类"); }}publicclassTest{ publicstaticvoidmain(String[]a
8、ges){ Ziz=newZi(); z.seti(10); //Ziz=newzi(10); System.out.println(z.geti()); //10
此文档下载收益归作者所有