Java面向对象(下)
Posted yiruo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面向对象(下)相关的知识,希望对你有一定的参考价值。
Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回
一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
类的三大特性:封装、继承、多态;
封装:把复杂的逻辑隐藏起来,对外只显示一个接口。
继承:子类继承父类公开的属性和方法,这样可以减少代码量。
多态:一种事物的多种形态。
一.类的继承
1.继承的概念
继承用于描述事物之间的所属关系,通过集成可以使所有事物之间形成一种关系体系。
通过extends来实现继承,其中只允许单继承,也就是说一个类只能有一个父类,可以好多各类共同拥有一个父类,也允许多重继承。
2.重写父类方法
(1)重写与重载
重写:在子类当中重新定义在父类当中已经存在的方法,且重写后方法的权限不能低于父类当中的权限
重载:在一个类中,有些许方法名相同的方法,但他们参数的个数或者类型不一样重写是两个类,重载一个类
(2)注意
父类当中的private修饰的方法和属性不会被子类继承到
3.super关键字
(1)概念
当子类重写了父类方法时,子类无法访问父类中的方法,于是乎就有了super
(2)作用
用super调用父类的属性和方法
用super调用父类的构造方法,相当于this。(super和this要写在构造方法第一行,必须是第一行)
二.final关键字
final修饰的类不能被继承,修饰的方法不能被重写,修饰的变量为常量不能被更改
三.多态
1.理解
同一个行为具有多个不同表现形式或形态的能力就是多态,人两条图走路,猫四条腿走路,蜈蚣n条腿走路这就是多态,多态体现在方法的重写和重载,重载式多态,也叫编译时多态,重写式多态,也叫运行时多态狗的叫声是:汪汪汪,而猫的叫声是:喵喵喵。这就体现了不同动物shout方法的多态
2.对象类型转换
**抽象类和接口可以当做向上转型的引用变量类型
(1)向上转型
1*概念
通过类型转换把子对象转为父类型
如 Animal dog=new Dog();
2*注意
转型后只能调用子类父类共同具备的属性和方法,且属性和方法的值还是子类的。
如有一只狗叫大黄(DaHuang)他学会了一个本领fly(),并且他还会用两条腿跑把它进行向上转型 Dog daHuang=new daHuang();现他不能fly因为父类dog中没有fly方法,但他依旧叫大黄,并且可以两条腿走,这些属性dog类都具备所以都保留了下来。
3*Object类
Object是所有类的父类,他有一个toString()方法,所有对象可直接调用,他用与输出
对象的基本信息,如对象所属类的类名、和对象的地址信息,也可以对toString()
方法重写,用于放回一些特有信息
4*意义
减少代码重复
*******************************有例子***********************************************
(2)向下转型
通过类型转换把父对象转为子类型
1*注意事项
向下转型的前提是父类对象指向的是子类对象(也就是说,在向下转型之前,它得先向上转型)
向下转型只能转型为本类对象(猫是不能变成狗的)
2*意义
向上转型类似于一种模糊化处理,向下转型则是对模糊化的去除,找回向上转型丢失的方法
四.接口
1.抽象类
(1)定义
定义一个类时通常需要定义一些方法来描述该累的行为特征,有些时候,这些方法的方式是无法确定的So就诞生了用abstract修饰的抽象类
(2)特点
允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象类中可以有普通的方法也可以同时都包含,也可以不包含抽象方法,抽象类不能创建对象。
2.接口
(1)定义
如果一个抽象类中所有方法都是抽象的我们可以用关键字interface修饰(而不是class)使其变为一个接口
(2)特点
1*方法全部为抽象方法,所有方法默认用public abstract来修饰,成员变量全部默认用public static final修饰一般不在接口中定义变量
2*由于接口中全部为抽象方法所有接口不能创建实例化对象,需要重新定义一个类并用implements关键字来实现接口中的所有方法。
3*接口可以通过extends去继承另一个接口
4*若一个抽象类实现某个接口只要实现接口中的部分方法就行,普通类需全部实现
5*一个类可以implements多个接口,但只能extends一个类
6*一个类可同时实现继承和实现接口但extends必须在implements前面
(3)抽象类和接口的理解
1*接口是对行为的抽象
2*抽象类生来就是被继承的
3*java中类是现实生活中具体事物的映射,所以抽象类是对一种事物的抽象,包括属性和方法,即对类抽象而接口却是对类局部进行的抽象即对行为的抽象,在java中继承是一个 "是不是"的关系,而 接口 的实现则是 "有没有"的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系
4*抽象类作为很多子类的父类,可以把它认为是一种模板。而接口可以认为是一种行为规范
5*对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。
3.匿名内部类
未完待续
五.异常
六.包的定义与使用
以上是关于Java面向对象(下)的主要内容,如果未能解决你的问题,请参考以下文章