08月18日 星期二 主要是封装
来源:互联网 发布:淘宝卖鲜花 编辑:程序博客网 时间:2024/05/16 14:36
August 18, 2015 9:43 AM
面向对象特征:继承、封装、多态、(抽象)
多态:允许使用父类对象变量引用子类对象,允许一个接口类型变量引用实现类对象。反过来却不行。
一句话描述多态:相同行为,不同的实现。
多态的形成:由于在产生子类对象之前,会先产生父类对象。然后再父类对象基础上扩展子类特有的方法和属性。所以子类对象包含一个完整的父类对象。父类变量指向子类对象,是成立的。因为父类中定义的所有的内容在子类中都可以找到相对应的内容。
但子类不能指向父类对象,子类中定义的内容要多于父类,所以子类中定义的内容在父类中不一定有相对应的内容。
多态调用时,用父类变量指向子类对象,只能调用父类中定义的方法和属性,不能调用子类中特有的方法和属性。
多态调用子类方法时,优先调用子类重写的父类的方法。
如果使用一个父类的变量作为方法的参数,就意味着可以传递任何一个子类对象。
- Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。
- 默认的,也称为default,在同一包内可见,不使用任何修饰符。
- 私有的,以private修饰符指定,在同一类内可见。
- 共有的,以public修饰符指定,对所有类可见。
- 受保护的,以protected修饰符指定,对同一包内的类和所有子类可见。
- 访问控制和继承
请注意以下方法继承的规则:- 父类中声明为public的方法在子类中也必须为public。
- 父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。
- 父类中默认修饰符声明的方法,能够在子类中声明为private。
- 父类中声明为private的方法,不能够被继承。
内部类:在一个类中,在定义一个类,这叫做内部类。
内部类和外部类一样,都要产生class文件。内部类的class文件命名:外部类名$内部类名.class
内部类相当于外部类的属性,内部类对象的产生必须依赖于外部类的产生。
java 封装
在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。1.信息集合 2.信息隐藏
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
私有属性+get、set方法和公有属性属性的区别:
1、私有属性+get/set方法,可以通过删除get或set方法,将属性做成只读或只写属性。但公有属性不行。
2、私有属性在设置属性值时,可以再set方法中加入属性有效性的验证,从而避免属性赋值为无效值。但公有属性不行。
静态块,在类加载时执行,只执行一次
Static修饰符
静态变量:
Static关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被成为类变量。局部变量能被声明为static变量。
静态方法:
Static关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。
实例化块,产生一个对象执行一次,在super()之后执行:
public class Student { static{ System.out.println("Student静态块"); } public Student() { super(); System.out.println("创建学生"); }}------------------------------------------------------------------public class J112Student extends Student { static{ System.out.println("产生J112静态块"); } { System.out.println("实例化块"); } public J112Student() { super(); System.out.println("产生J112学生"); }}-------------------------------------------------------------------public class Test { public static void main(String[] args) { new J112Student(); new J112Student(); }}结果:Student静态块产生J112静态块创建学生实例化块产生J112学生创建学生实例化块产生J112学生
多态:
“`java
package day0818_3多态集合;
public class R {
void 怎么用(电器 dq){
dq.使用电器();
}
public static void main(String[] args) {
R r = new R();
电器[] d = new 电器[5];
d[0] = new 电器();
d[1] = new 电视机();
d[2] = new 电冰箱();
d[3] = new 电饭煲();
d[4] = new 洗衣机();
for (int i = 0; i < d.length; i++) { r.怎么用(d[i]); }}
}
class 电器{
public void 使用电器(){
System.out.println(“我要使用你们了!”);
}
}
class 电冰箱 extends 电器{
public void 使用电器(){
System.out.println(“电冰箱制冷!”);
}
}
class 电视机 extends 电器{
public void 使用电器(){
System.out.println(“看电视节目!”);
}
}
class 洗衣机 extends 电器{
public void 使用电器(){
System.out.println(“洗衣服!”);
}
}
class 电饭煲 extends 电器{
public void 使用电器(){
System.out.println(“电饭煲煮饭!”);
}
}
“`
- 08月18日 星期二 主要是封装
- 08月04日 星期二
- 07月28日 星期二
- 11月1日 星期二
- 2014年11月18日星期二( DEMO9-4)
- 2004年9月28日星期二
- 2004年10月19日星期二
- 1月24日 星期二 晴
- 2006年9月12日星期二
- 2006年9月19日星期二
- 2006年9月26日星期二
- 2006年10月10日星期二
- 07年8月28日 星期二
- 2007年4月17日 星期二
- 2007年4月23日 星期二
- 2007年5月8日 星期二
- 2007年5月15日 星期二
- 2007年5月22日 星期二
- CreateFileMapping用法
- 组织架构图,比较实用,收走
- Tomcat HTTPS
- 如何快速的杀掉Oracle的Session
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- 08月18日 星期二 主要是封装
- 安卓基础学习错误总结
- python编绎程序中出现this constructor takes no arguments
- iOS开发UI篇——CAlayer(创建图层)
- Android中LruCache的源码分析
- 《剑指Offer》读书笔记---面试题24:二叉搜索树的后序遍历序列
- (Android)创建数据库与完成数据库的增删查改
- bfs入门题 poj 1915 knight moves
- MyEclipse 创建 servlet 项目