AdaultBird--我的黑马程序员之路!Chapter12---面向对象的三大特性!
2015-09-12 13:31
483 查看
一、封装
1、封装的概念
Encapsulation隐藏对象的属性和方法的实现细节,仅对外提供公共的访问方式!
2、好处:
(1)、将变化隔离(2)、便于使用(3)、提高重用性(4)、提高安全性
3 、封装原则:将不需要对外提供的内容都隐藏起来,把属性隐藏,提供公共访问方式
4、private:私有,权限修饰符,用于修饰类中的成员(成员变量和成员函数),私有只在本类中有效
二、继承
1、继承的概念
从已有的类中派生出新的类,新的类可以 吸收已有类的属性和行为,并能扩展新的功能。
2、继承的作用
(1)提高了代码的复用性
(2)让类与类之间产生了关系,有了这个关系才有了多态的特性
3、继承的注意事项
(1)千万不能为了获取其他类的功能,简化代码而继承。必须是类与类之间存在所属关系才可以继承
(2)java只支持单继承,不支持多继承,但支持多层继承,因为存在安全隐患
(3)java提供了实现多继承的另外一种方式,多实现
4、子父类中的函数
(1)当子类存在和父类一模一样的函数时,会运行子类函数的内容,叫做方法的重写
(2)子类重写父类函数需要注意两点:
必须保证子类权限大于父类,才可以覆盖,否则编译失败
静态只能覆盖静态
5、子父类中的构造函数
(1)、在子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的构造函数默认第一行有一条隐式的super()
(2)、为什么子类一定要访问父类中的构造函数
因为父类中的数据,子类可以直接获取,所以在子类建立对象时,需要先查看父类是如何对这些数据进行初始化的,所以在初始化时,一定要先访问父类的构造函数
如果要访问父类中指定的构造函数,可以通过手动定义super语句方式来指定
注意:super语句一定在子类构造函数的第一行
(3)子类的实例化过程
子类的所有构造函数都默认访问父类中的空参数构造函数,因为子类的每一个构造函数默认第一行都有一个隐式super()语句
当父类总没有空参数构造函数时,子类必须手动通过super语句形式来指定要访问的父类构造函数
当然:子类中的构造函数第一行也可以手动指定this语句来访问本类中的其他构造函数
子类中至少有一个构造函数会访问父类中的构造函数
6、final关键字
final可以修饰 类 方法 变量
被final修饰的类不可以被继承
被final修饰的方法不可以被覆盖
被final修饰的变量是一个常量,只能被赋值一次
内部类只能访问被final修饰的局部变量
常量的书写格式 final value =VALUE_OF_X;
7、抽象类
1、概念
当多个类存在相同功能,但功能主体不同,此时可以进行向上抽取,只抽取定义,而不抽取功能主体。
2、特点
(1)抽象方法一定在抽象类中
(2)抽象方法和抽象类必须被 abstract修饰
(3)抽象类不可以new对象,因为调用抽象方法没有意义
(4)抽象类中的方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用。如果子类只复写了部分抽象方法,那么该子类也是一个抽象类
8、模板设计模式
概念:当定义一个功能时,功能的一部分是确定的,但有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类来完成。
9、接口(Interface)
接口是一个特殊的抽象类,该类中,可以定义功能,但没有任何具体的实现方式,只作为入口,被实现它的子类去完成,他是java中多继承的另外一种体现形式
接口中的成员修饰符是固定的:成员变量 public static final 成员函数public abstract
接口的特点:
(1)接口是对外暴露的规则
(2)接口是程序功能的扩展
(3)接口可以用来多实现
(4)类与接口之间是实现关系,类在继承一个类的同时,可以多实现
(5)接口与接口之间可以有击沉关系
三、多态
1、多态的概念:某一类事物的多种存在形态
2、多态的体现
父类引用指向子类对象
3、多态的前提
类与类之间必须要有关系,要么继承,要么实现
4、多态的弊端
只能父类的引用,访问父类中的成员
5、多态的好处
多态的出现大大提高了程序的扩展性
6、多态中成员函数的特点
(1)在编译时期,参阅引用型变量是否有调用的方法,如果有编译通过,没有,编译失败
(2)在运行时期,参阅所属的对象的类中是否有调用的方法
总结:成员函数在多态调用时,编译看左边,运行看右边
7、在多态中成员变量的特点
无论编译或运行,都参考左边(引用型变量所属的类)
8、多态中静态成员函数的特点
无论编译或运行,都看左边
9、Object类及equals 和toString方法
Object类时所有类的直接或间接父类,该类中定义了所有类的对象都具备的功能
如果需要比较两个对象是否相等,需要复写Object类中的equals方法,参数(Object,obj)必须向下转型
如果要自定义被打印的内容,则需要覆盖toString方法,否则非字符串类型对象将返回被打印内容的hashCode值
10、内部类
(1)概念:将一个类定义在另一个类的内部,里面那个类就称之为内部类
(2)内部类访问的特点
内部类可以直接访问外部类的成员,包括静态成员,之所以可以直接访问,是因为内部类中持有了一个外部类的引用格式:外部类名.this
外部类要访问内部类的成员必须建立内部类对象
(3)内部类访问外部类的格式
当内部类定在在外部类成员位置上,而且非私有,可以在外部其他类中,直接建立内部类对象。格式
外部类名.内部类名 对象名=外部类对象.内部类对象(new Outer().new Inner())
11、匿名内部类
1、匿名内部类其实就是内部类的简写格式
2、定义匿名内部类的前提,必须是继承了一个类或者实现了接口
3、匿名内部类的格式: new 父类或者接口(){子类内容}
4、其实匿名内部类就是个匿名子类对象,而且是带有内容的对象
1、封装的概念
Encapsulation隐藏对象的属性和方法的实现细节,仅对外提供公共的访问方式!
2、好处:
(1)、将变化隔离(2)、便于使用(3)、提高重用性(4)、提高安全性
3 、封装原则:将不需要对外提供的内容都隐藏起来,把属性隐藏,提供公共访问方式
4、private:私有,权限修饰符,用于修饰类中的成员(成员变量和成员函数),私有只在本类中有效
二、继承
1、继承的概念
从已有的类中派生出新的类,新的类可以 吸收已有类的属性和行为,并能扩展新的功能。
2、继承的作用
(1)提高了代码的复用性
(2)让类与类之间产生了关系,有了这个关系才有了多态的特性
3、继承的注意事项
(1)千万不能为了获取其他类的功能,简化代码而继承。必须是类与类之间存在所属关系才可以继承
(2)java只支持单继承,不支持多继承,但支持多层继承,因为存在安全隐患
(3)java提供了实现多继承的另外一种方式,多实现
4、子父类中的函数
(1)当子类存在和父类一模一样的函数时,会运行子类函数的内容,叫做方法的重写
(2)子类重写父类函数需要注意两点:
必须保证子类权限大于父类,才可以覆盖,否则编译失败
静态只能覆盖静态
5、子父类中的构造函数
(1)、在子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的构造函数默认第一行有一条隐式的super()
(2)、为什么子类一定要访问父类中的构造函数
因为父类中的数据,子类可以直接获取,所以在子类建立对象时,需要先查看父类是如何对这些数据进行初始化的,所以在初始化时,一定要先访问父类的构造函数
如果要访问父类中指定的构造函数,可以通过手动定义super语句方式来指定
注意:super语句一定在子类构造函数的第一行
(3)子类的实例化过程
子类的所有构造函数都默认访问父类中的空参数构造函数,因为子类的每一个构造函数默认第一行都有一个隐式super()语句
当父类总没有空参数构造函数时,子类必须手动通过super语句形式来指定要访问的父类构造函数
当然:子类中的构造函数第一行也可以手动指定this语句来访问本类中的其他构造函数
子类中至少有一个构造函数会访问父类中的构造函数
6、final关键字
final可以修饰 类 方法 变量
被final修饰的类不可以被继承
被final修饰的方法不可以被覆盖
被final修饰的变量是一个常量,只能被赋值一次
内部类只能访问被final修饰的局部变量
常量的书写格式 final value =VALUE_OF_X;
7、抽象类
1、概念
当多个类存在相同功能,但功能主体不同,此时可以进行向上抽取,只抽取定义,而不抽取功能主体。
2、特点
(1)抽象方法一定在抽象类中
(2)抽象方法和抽象类必须被 abstract修饰
(3)抽象类不可以new对象,因为调用抽象方法没有意义
(4)抽象类中的方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用。如果子类只复写了部分抽象方法,那么该子类也是一个抽象类
8、模板设计模式
概念:当定义一个功能时,功能的一部分是确定的,但有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类来完成。
9、接口(Interface)
接口是一个特殊的抽象类,该类中,可以定义功能,但没有任何具体的实现方式,只作为入口,被实现它的子类去完成,他是java中多继承的另外一种体现形式
接口中的成员修饰符是固定的:成员变量 public static final 成员函数public abstract
接口的特点:
(1)接口是对外暴露的规则
(2)接口是程序功能的扩展
(3)接口可以用来多实现
(4)类与接口之间是实现关系,类在继承一个类的同时,可以多实现
(5)接口与接口之间可以有击沉关系
三、多态
1、多态的概念:某一类事物的多种存在形态
2、多态的体现
父类引用指向子类对象
3、多态的前提
类与类之间必须要有关系,要么继承,要么实现
4、多态的弊端
只能父类的引用,访问父类中的成员
5、多态的好处
多态的出现大大提高了程序的扩展性
6、多态中成员函数的特点
(1)在编译时期,参阅引用型变量是否有调用的方法,如果有编译通过,没有,编译失败
(2)在运行时期,参阅所属的对象的类中是否有调用的方法
总结:成员函数在多态调用时,编译看左边,运行看右边
7、在多态中成员变量的特点
无论编译或运行,都参考左边(引用型变量所属的类)
8、多态中静态成员函数的特点
无论编译或运行,都看左边
9、Object类及equals 和toString方法
Object类时所有类的直接或间接父类,该类中定义了所有类的对象都具备的功能
如果需要比较两个对象是否相等,需要复写Object类中的equals方法,参数(Object,obj)必须向下转型
如果要自定义被打印的内容,则需要覆盖toString方法,否则非字符串类型对象将返回被打印内容的hashCode值
10、内部类
(1)概念:将一个类定义在另一个类的内部,里面那个类就称之为内部类
(2)内部类访问的特点
内部类可以直接访问外部类的成员,包括静态成员,之所以可以直接访问,是因为内部类中持有了一个外部类的引用格式:外部类名.this
外部类要访问内部类的成员必须建立内部类对象
(3)内部类访问外部类的格式
当内部类定在在外部类成员位置上,而且非私有,可以在外部其他类中,直接建立内部类对象。格式
外部类名.内部类名 对象名=外部类对象.内部类对象(new Outer().new Inner())
11、匿名内部类
1、匿名内部类其实就是内部类的简写格式
2、定义匿名内部类的前提,必须是继承了一个类或者实现了接口
3、匿名内部类的格式: new 父类或者接口(){子类内容}
4、其实匿名内部类就是个匿名子类对象,而且是带有内容的对象
相关文章推荐
- AdaultBird--我的黑马程序员之路!Chapter11---面向对象概述!
- 面试练习题
- leetcode面试准备:Triangle
- 黑马程序员------Java基础(其他对象)
- 求职之路(拿到百度、美团、趋势科技、华为offer)
- 面试常见题
- The Log:每个程序员都应该知道有关实时数据的统一抽象(3)日志与实时流处理
- The Log:每个程序员都应该知道有关实时数据的统一抽象(2) 数据集成
- The Log:每个程序员都应该知道有关实时数据的统一抽象(1)概念
- Android开发岗面试之常用面试题
- 关于现代 CPU,程序员应当更新的知识
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- 黑马程序员——java基础知识篇——>IO流
- 黑马程序员——java基础知识篇——>集合
- 黑马程序员——java基础知识篇——>String类
- PHP [面试秘籍] 程序员经典面试回答,怎样回答面试官的问题
- 面试题
- 面试
- 前端面试题
- 求职之路(2015南京站拿到百度、美团、趋势科技、华为offer)