您的位置:首页 > 编程语言 > Java开发

Java笔记:封装、继承和多态

2017-08-16 20:37 337 查看
面向对象三大特性:封装性、继承性、多态性

一、封装

1、什么是封装

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

2、封装的好处:

1)只能通过规定方法访问数据,保证了类内部数据结构的完整性

2)隐藏类的实现细节

3)方便加入控制语句

4)方便修改实现

3、封装的步骤

1)修改属性的可见性(设为private)

2)创建公有的getter/setter方法(用于属性的读写 )

3)在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断 )

4、this关键字的用法

this代表当前对象

1)调用属性

2)调用方法

3)调用构造方法(如果使用,必须是构造方法中的第一条语句 )

this();调用无参构造

二、继承:关键字extends

符合is-a关系的设计使用继承

继承是代码重用的一种方式(将子类共有的属性和行为放到父类中)

1、使用继承步骤

1)编写父类

class Pet {

//公共的属性和方法

}

2)编写子类,继承父类

class Dog extends Pet {

//子类特有的属性和方法

}

Java支持单继承,一个类只能直接继承一个父类

2、子类访问父类成员 (使用super关键字,super代表父类对象)

1)访问父类构造方法:在子类构造方法中调用且必须是第一句

super();

super(name);

2)访问父类属性

super.name;

3)访问父类方法

super.print();

super关键字来访问父类的成员

super只能出现在子类的方法和构造方法中

super调用构造方法时,只能是第一句

super不能访问父类的private成员

3、不能被继承的父类成员

1)private成员

2)子类与父类不在同包,使用默认访问权限的成员

3)构造方法

4、多重继承关系的初始化顺序

父类属性->父类构造方法->子类属性->子类构造方法

5、方法重写

方法重写的规则

1)方法名相同

2)参数列表相同

3)返回值类型相同或者是其子类

4)访问权限不能严于父类

方法重写与方法重载比较:



三、抽象类和抽象方法(限制实例化)

关键字abstract

1、抽象类

public abstract class Pet {

}

2、抽象方法

public abstract void print();

abstract也可用于方法——抽象方法

抽象方法没有方法体

抽象方法必须在抽象类里

抽象方法必须在子类中被实现,除非子类是抽象类

3、final修饰符

1)final修饰的类,不能再被继承

2)final修饰的方法,不能被子类重写

3)final修饰的变量将变成常量,只能在初始化时进行赋值

四、多态

1、什么是多态(父类引用指向子类对象 )

多态:同一个引用类型,使用不同的实例而执行不同操作

2、实现多态

(1)实现多态的三个要素:

1)编写具有继承关系的父类和子类

2)子类重写父类方法

3)使用父类的引用指向子类的对象(向上转型)

(2)实现多态的两种形式

1)使用父类作为方法形参实现多态

2)使用父类作为方法返回值实现多态

五、对象类型的转换

1、向上转型(自动类型转换)

将子类对象看作是父类对象被称为“向上转型”

2、向下转型(强制类型转换)

向下转型是将较为抽象的类转换为较具体的类

使用向下转型时,必须使用显示类型转换,向编译器指明将父类对象转换为哪一种类型的子类对象

3、instanceof判断对象类型

当在程序中执行向下转型时,如果父类对象不是子类对象的实例,就会发生ClassCastException异常,所以在执行向下转型之前需要判断父类对象是否为子类对象的实例。这个判断通常使用instanceof操作符来完成。可以使用instanceof操作符判断是否一个类实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。

语法格式

myobject instanceof ExampleClass

->myobject:某类的对象引用

->ExampleClass:某个类

使用instanceof操作符的表达式返回值为布尔值。如果返回true,说明myobject对象为ExampleClass的实例对象,如果返回false,说明myobject对象不是ExampleClass的实例对象

instanceof通常和强制类型转换结合使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: