第二篇JAVA面向对象

6..封装

(1)封装:形成类的过程,指属性和方法的定义在类中。

(2)访问权限 类 包 子类 其他包

  Public √ √ √ √

   Protect √ √ √ ×

   Default √ √ × ×

   Private √ × × ×

(3)实现封装由以下两个步骤,一将不能暴露的成员隐藏起来,二用公共方法来暴露对该隐藏成员的访问,可以给函数上加修饰符public,将该方法定义为公共的。

(4)默认:private<default<protected<public;

(1)在java中被继承的类称为父类、基类或者超类,与之对应的类称为子类或者派生类。

(2)继承是通过extends实现的。

Java不支持多重继承,一个子类只能有一个父亲,但是可以有多层继承。object是所用类的直接父类或间接父类;如果一个成员要被子类继承之后使用,这个成员不能是private类型,因为私有的成员不能在类的外部使用,当然也不能被子类使用。

(3)优点:能够复用源代码,可以利用已有类扩展

(4)缺点:实现了类与类之间的耦合性。

(5)

Super super(父)成员变量;

       super(父)成员方法();

       super(父)参数列表;

(6)在构造子函数时先调用父类的构造方法再调用子类,先输出父亲再输出子类。

子类没有调用super,会用父类中默认

子类返还用super调用父类且没有定义参数,这包销。

              变量的隐藏

(7)屏蔽/覆盖

             方法重写

(9)super表示当前类的直接父类。访问被子类隐藏的变量或被重写的方法,则可以通过关键字super实现相应的访问。

注意 super(title);必须写在子类构造函数的第一句,传入的参数必须和父类构造函数中的参数列表类型匹配。

Instance of 运算符 用于判断一个对象是否是某一个父类的实例对象,或者是否是某一个类的子类的实例对象。

对象名 instance of 类名;

(10)

调用父类的构造方法有如下规则:

1、在构造子类对象时,父类的构造方法一定会被调用,先被执行。

2、 在子类的构造方法使用了super调用父类的构造方法,则按给定的参数调用父类的相应构造方法;且写在构造器的第一行。

3、在子类的构造方法没有使用了super调用父类的构造方法,则父类中的无参数的构造方法会被自动调用。

4、在子类的构造方法没有使用了super调用父类的构造方法,并且父类中也没有定义没有参数的构造方法,则编译不能通过。

如果父类和子类都定义了初始化器,则构造子类对象时,调用顺序为:

父类的静态初始化器——子类静态初始化器——父类的初始化器——父类的构造方法——子类的初始化器——子类的构造方法

8.上转型对象

(1)当用父类对象表示子类对象时,父类对象称为子类对象的上转型对象

(2)当一个父类对象表示的是子类对象时,还可以将该父类对象强制转换成子类对象。

(3)

Aa=new B();//对象的上转型(失去子类特有,只有继承<=>可访问父类的变量不可访问子类特有或者子类重写的方法

Bb=(B)a;对象的下转

9.多态

(1)函数传入的形参可以是父类类型,而实际传入可以是子类对象

(2)函数的返回类型是父类型,而实际返回的是子类对象

(3)父类子类对象的类型转换

1.子类对象无需转换就可以赋值与父类引用

2.严格来讲,父类类型无法转换成子类类型,但是有一种特殊情况,如果父类类型对象原来就是莫一种子类类型的对象,则可以转换成相应的子类类型对象,此时是强制转换。

(4)抽象类与接口

1..关键字abstract修饰的类称为抽象类

2.abstract class 类名

{

实例方法(){}

抽象方法;

}

[访问权限] abstract 数据类型 方法名([参数列表]);

4.抽象类不能被实例化,即不能用new关键字去产生对象;

抽象类被子类继承,子类必须重写抽象方法;抽象方法只需要声明,不需要实现(无方法体);抽象类中可以有非抽象方法,也可以有抽象方法(如果一个类中有抽象方法,该类必须定义成抽象类);抽象方法只有方法的头部,没有方法体。抽象方法一定不能用关键字final修饰。抽象函数必须被重写,除非子类也是抽象类;在抽象类中可以含有普通成员函数。

9.接口

1.是对抽象类的进一步抽象 在Java中单继承,多接口

格式如下

[修饰符]interface接口名[extends 父类.接口列表]

{

[public][static][final]数据类型 变量名=常量值;

[public][abstract]返回值类型 方法名(参数列表)‘

}

2.实现接口

{

成员变量和成员方法;

重写接口A中的所有方法;

重写接口B中的所有方法;

}

3.接口名 对象名=new 实例类构造方法();

4.注意

1、接口不能实例化;

2、常量+抽象方法(只有声明,没有实现);

3、这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

10.其他

1.final类

2.Final可以修饰一个函数,一个类,一个成员变量

3. final常量

     最终方法

    Final类最终类

4.该成员变量不允许被改变,即不允许重新负责(哪怕是同样一个值),因此常用final来定义一个常量

1、final 成员变量必须在声明时或在构造函数中显式赋值才能使用。一般情况下,在定义时就进行赋值。

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值