java面向对象基础2

封装

封装的概念

将类的某些嘻嘻隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

封装的好处

只能通过规定的方法访问数据

隐藏类的实例细节,方便修改和实现

封装的步骤


使用包管理java中的类

包的作用

管理java文件

解决同名文件冲突

定义包

Package 报名

注意:必须放在java源程序第一行。报名可以使用“.”号隔开。例如:com.farsight.Test

系统中的包


包的使用


继承

继承的概念

继承是类与类的一种关系,是一种“is a ”de 关系。

例如:狗是动物,我们可以描述狗类继承动物。狗类是动物类的子类(派生类subClass),动物类是狗类的父类(基类superClass)

继承的好处

子类拥有父类的所有属性和方法。(private私有无效)

实现代码复用。

语法规则


方法的重写(override)

概念

如果子类对继承弗雷的方法不满意,是可以重写父类继承的方法

,当调用方法时会优先调用子类方法。

语法规则

方法名,参数列表,返回值类型都相同

继承的总结

子类可以扩展父类

子类拥有父类所有的成员,但不能继承构造方法

子类可以新增自己的属性和行为

子类改写父类的行为

注意事项

Java中的继承是单继承,子类有且只有一个父类、

子类不能访问父类的私有成员

如果父类只定义带参的构造,那么子类必须在构造的第一行显示调用父类的构造。

如果父类定义了不带参的构造,那么子类不许要显示调用,系统会自动添加super()调用父类构造

关键字super

调用父类的构造方法super()

调用父类的属性 super.属性

调用父类的行为 super.行为

继承的初始化顺序

先初始化父类在初始化子类

先执行父类的构造方法在执行子类的构造方法

关键字final

使用final关键字做标识符有最终的含义。Final可以修饰类,方法,属性和变量

Final修饰属性表示常量

Final方法表示该变量不能再被重写

Final修饰类,表示该类不能再被继承。

Object类


Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类
Object类中的方法,适合所有类

toString()方法

在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象的地址字符串) 
可以通过重写toString()方法表示出对象的属性

equals()方法

比较的是对象的引用是否指向同一块内存地址 
一般情况下比较两个对象时比较他的值是否一致,所以要进行重写

抽象类

语法

用abstract修饰的类称为接口类

抽象类:


应用场景

在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

从国个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

作用

限制规定子类必须实现某些方法,但不关注实现细节。

使用规则

抽象类不能创建对象,只能被子类继承。

包含抽象方法的类一定是抽象类,抽象类不一定包含抽象方法,抽象类中可以包含普通方法

抽象方法,用abstract修饰,没有方法体

如果子类继承一个抽象的父类,要么实现父类中的抽象方法,要么子类定义为一个抽象类。

接口

概念

类是一种具体的实现,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法。

接口是一种特殊的抽象类,它是对功能的抽象。

接口定义

和类不同,定义接口不在使用class关键字,而是使用interface关键字

 

[修饰符] interface接口名[extends父接口1,父接口2...]{

    零到多个常量定义...

    零到多个抽象方法定义...

}

       接口中所有属性必须是静态常量。

即使在定义时不加public static final 修饰符,系统也会自动添加

接口中所有方法都为抽象方法

即使定义时没有添加public abstract修饰,系统也会自动添加


使用接口

一个类可以实现多个接口(一个类可以拥有多个功能),实现接口使用implements关键字,java中一个类智能继承一个父类,是不够灵活的,通过实现多个接口可以做补充

思考:接口能否继承父类

不能,如果父类中有普通方法,那么接口继承父类,就有了父类中的普通方法和接口定义相矛盾。

思考接口之间是否可以继承?允许多继承吗?

可以,允许

思考:接口中的成员可以为私有吗?

不行,接口中的成员必须为public公共的。

多态

概念:

       对象的多种形态

引用多态

父类的引用可以指向本类的对象

父类的引用可以指向子类的对象

方法多态

Person person=new Student();

Student student=new Student();

思考:两个不同类型的引用person和student的区别在哪里?

Student可以访问对象中的所有非私有的成员

Person 只能访问对象那个中从父类继承下来的非私有成员

引用类型转换

向上类型转换(隐式/自动类型转换),是小类型到大类型的转换

向下类型转换(强制类型转换),是大类型到小类型

Instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题

 自动类型转换

       子类型的引用自动转换为父类型引用


 

强制类型转换

       父类型的引用强制转换为子类型的引用

  

思考下面的强转有问题吗?

有问题,会抛出类型转换异常

类型检测运算符 instanceof

功能:instanceof可以检测引用所指向的对象的类型


程序输出结果is01 = false , is02 = true

Java中的父子关系有两种

子类extends父类

类implements 接口

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值