---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
1.面向对象的三大特征之一:封装
封装即对要操作的实体进行隐藏,使原始功能对外不可见,通过其他方法间接的操作真实的实体。
日常生活中的各种电器的遥控器、银行的密码锁、指纹识别系统等均为封装的体现。
封装的标准实现:
class Person{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
2.面向对象的三大特征之二:继承
继承描述的是一种类间关系
通过继承可以减少模型内部结构的重复描述,加强代码的复用性父类/超类/基类:类B继承类A,称类A为父类
子类:类B继承类A,称类A为子类顶层父类:Object语法结构:
class 子类名称 extends 父类名称{ } 子类可以继承父类所有的成员变量、成员方法。也可以对父类中已有的成员变量和成员方法进行重定义。另外,子类可以添加父类没有的成员。 重写:子类对父类中已有的实例方法进行重新定义,称子类对父类的指定方法进行重写重写只发生在继承关系中,重写描述的是子类方法对父类方法的关系重写时子类重写的方法访问控制权限必须大于父类的访问控制权限误区:
静态方法的覆盖称为子类隐藏了父类的静态方法,而不是重写了父类方法父类的私有方法,子类是无法继承的,因此父类私有方法不能被重写实例方法在重写时不能添加static修饰符,静态方法被重新定义时不能定义为非静态的方法重写的应用
当一个类开发完成,后期维护过程中,发现其功能已经过时,需要对其进行维护,添加一些新的功能,但是旧的功能如果被修改,可能导致其他功能连带失效,为了避免该现象,在不惊动原始功能的基础上,对其进行功能的扩展,即可以利用重写的特点进行,这一方式即设计模式中的装饰模式的雏形。
super
子类对父类的某些实例方法进行覆盖后,在子类中将无法直接调用父类被覆盖的方法,可以通过super关键字,对父类的成员进行引用 super.父类成员变量 super.父类成员方法super():会访问父类中空参数的构造函数。而且子类中所有的构造函数默认第一行都是super(); instanceof子类继承自父类,子类将具有父类的形态,可以说子类也是父类的对象,可以使用关键字instanceof来判定某个对象是不是某种类类型3.abstract 抽象类
抽象类:可以包含不确定成员的类
语法结构:
abstract class 类名{ }
抽象类的特点:
1,抽象类中的不确定成员指抽象方法,抽象类中可以包含抽象方法,但不是必须包含抽象方法,一个类一旦包含了抽象方法,则必须将该类声明为抽象类。2,抽象方法和抽象类都必须被abstract关键字修饰。3,抽象类不可以用new创建对象。因为调用抽象方法没意义。4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
4. interface 接口
接口是Java中的一种特殊结构
接口为类的制作进行了严格的限定,制作接口仅仅是为类的定义建立一种统一的标准,当某个类需要进行严格的格式限定时,可以为该类指定满足何种规范,接口在这里充当了规范的作用 语法结构:[访问控制修饰符] interface 接口名{ 变量声明 方法声明}
接口中的变量都是公共的静态的常量,并且要求对其进行初始化
接口中的变量默认修饰符 public static final 接口常量名 = 值;
接口中的方法都是公共的抽象方法,接口中的方法没有方法体,仅在接口所对应的规则间建立一种通用的操作定义
接口中的方法默认修饰符 public abstract 返回值类型 方法名(参数列表);
接口的修饰符
public:公共接口,可以被任意访问 默认: 只能在包内访问
接口的使用语法结构implements
class 类名 implements 接口名{ } class 类名 implements 接口名1,接口名2{ }以上过程称为类实现了某个接口
使用规则
一旦类在制作过程中实现了某个接口,就要对该接口中所有的抽象方法进行实现如果一个类未对所实现的接口中的方法进行全部实现,必须将该类声明为抽象类,毕竟该类的描述没有完全定义
每个接口定义了一种标准规范,当开发过程中如果频繁需要同时使用多个接口来限定一个类的制作,可以将多个接口进行合并
interface 总接口名 extends 子接口1,子接口2,…{ }
5.面向对象的三大特征之三:多态
多态:可以理解为事物存在的多种体现形态。
人:男人,女人
动物:猫,狗...我:(学校里)学生,(商场里)顾客...
1,多态的体现
父类的引用指向了自己的子类对象。父类的引用也可以接收自己的子类对象。
2,多态的前提
必须是类与类之间有关系。要么继承,要么实现。通常还有一个前提:存在覆盖。
3,多态的好处
多态的出现大大的提高程序的扩展性。
4,多态的弊端:
虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员。
5,在多态中成员变量和成员方法的特点:
1>非静态成员变量 |-- 编译时期,参考引用型变量所属类中,有没有定义成员变量 |-- 有编译通过,没有编译失败 |-- 运行时期,参考引用型变量所属类中的成员变量
2>静态成员变量
|-- 编译时期,参考引用型变量所属类中,有没有定义静态成员变量 |-- 有编译通过,没有编译失败 |-- 运行时期,参考引用型变量所属类中的静态成员变量
3>非静态成员方法
|-- 编译时期,参考引用型变量所属类中,有没有定义这个成员方法 |-- 有编译通过,没有编译失败 |-- 运行时期,参考子类重写父类中的这个成员方法,如果子类没有重写,运行父类的
4>静态成员方法
|-- 编译时期,参考引用型变量所属类中,有没有定义这个静态成员方法 |-- 有编译通过,没有编译失败 |-- 运行时期,参考引用型变量属于类中定义的这个静态成员方法
简单的记:
Fu f = new Zi();除了非静态成员方法,编译看左边,运行看左边只有非静态成员方法,编译看左边,运行看右边
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------