Java Object and Class基本

    xiaoxiao2021-03-30  32

    对象Object:

    万物皆对象:用来描述客观事物的一个实体,由一组属性和方法构成: 静态特征:(属性); 动态特征:(方法);

    封装:(Encapsulation)

    就是把一个事物包装起来,并尽可能隐藏内部细节; 对象的属性和方法是相辅相成,不可分割的,它们共同组成了实体对象。因此,对象具有封装性;

    类Class:

    类定义了对象将会拥有的特征(属性)和行为(方法); 类的属性:对象所拥有的静态特征; 类的方法:对象执行的操作;

    类和对象的关系:

    a: 抽象与具体的关系; b: 类是多个对象进行综合抽象的结果,是实体对象的概念模型,而一个对象是一个类的实例; c: 类就是对象的类型; 定义类就是抽取同类实体的共性自定义的一种数据类型;

    面向对象的优点:

    1. 与人类的思维习惯一致; 2. 信息隐藏,提高了程序的可维护性和安全性; 3. 提高了程序的可重用性;

    OOP 基本原则

    ——>封装,继承,多态 Encapsulation 封装

    1:私有化, 信息隐藏; 2:暴露一个或者少量的接口给外部访问;

    封装是对一个类而言,继承和多态是相对多个对象而言;

    Inheritance :继承

    >相似性,属性相似,行为相似;

    1:“is a”的关系,子类是父类的一种; 2: extends 关键字 class Manager extends Employee{}; 3 : 单继承

    访问修饰符权限

    访问修饰符本类同包子类其他Private可见默认(friendly)可见可见Protected可见可见可见Public可见可见可见可见

    Polymorphism 多态

    >不同类型的对象,相同的行为引发不同的结果; 多态是具有表现多种形态的能力的特征。更专业的说法:同一个实现接口,使用不同的实例而执行不同的操作; 使用父类作为方法形参优势明显,或者说使用多态的优势明显:可以减少代码量,提高代码的可扩展性和维护性。

    实现多态的三个条件:

    ① :继承的存在(继承是多态的基础,没有继承就没有多态); ② :子类重写父类的方法(多态下调用子类重写后的方法); ③ :父类引用变量指向子类对象(子类到父类的类型转换);

    将一个父类的引用指向一个子类对象,称为向上转型; 将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换。 引用数据类型之间强制转换时是还原子类的真实面目。

    Instanceof运算符

    对象 instanceof 类或接口 该运算符用来判断一个对象是否属于有一个类或者实现了一个接口,结果为true或false。在强制类型转换之前通过instanceof运算符检查对象的真实类型,再进行相应的强制类型转换,这样就可以避免类型转换异常,从而提高代码的健壮性; 使用instanceof运算符时,对象的类型必须和instanceof的第二个参数所指的类或接口在继承树上有上下级关系,否则就会出现编译错误。 Instanceof通常和强制类型转换结合使用;

    Overloading:重载

    1:方法名字必须相同; 2:参数类型不同或者个数,顺序不同; 3:与返回值无关; 4:必须在同一个类

    重写

    在子类中可以根据需求对从父类继承的方法进行重新编写,称为方法的重写或方法的覆盖(overriding)。方法重写必须满足如下要求:

    ① :重写方法和被重写方法必须具有相同的方法名; ② :重写方法和被重写方法必须具有相同的参数列表; ③ :重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类; ④ :重写方法不能缩小被重写方法的访问权限;


    在一个构造方法中不允许同时出现使用this和super语句调用构造方法(否则就有两条第一条语句)。 在类方法中不允许出现this或super关键字; 在实例方法中,this和super语句不要求是第一条语句,可以共存。

    抽象类

    抽象类和抽象方法的特点如下:

    ① :抽象类和抽象方法都通过abstract关键字来修饰; ② :抽象类不能实例化。 ③ :抽象方法只有方法声明,没有方法实现。

    Abstract可以用来修饰类和方法,但不能用来修饰属性和构造方法。 抽象类有构造方法。

    final修饰符

    1:用final修饰的类,不能再被继承。 2:用final修饰的方法不能被子类重写。 3:用final修饰的变量(包括成员变量和局部变量)将变成常量,只能赋值一次。 4:Final可以用来修饰类、方法、和属性,不能修饰构造方法。 5:对于引用型变量,一定要区分对象的引用值和对象的属性值两个概念,使用final修饰引用型变量,变量不可以再指向另外的对象,但是所指对象的内容却是可以改变的。(变量的值是固定不变的,而变量所指向的对象的属性值是可变的。) Abstract不能和private同时修饰一个方法; Abstract不能和static同时修饰一个方法; Abstract不能和final同时修饰一个方法或类;

    interface :接口

    接口的基础知识

    接口是一套规范,满足这个规范的设备,就可以将他们组装到一起,从而实现该设备的功能。软件中,接口同样是一种规范和标准,它们可以约束类的行为,是一些方法特征的集合,但是没有方法的实现。

    接口可以看作是一种特殊的“抽象类”,但是采用与抽象类完全不同的语法来表示,两者的设计理念也是不同的,抽象类利于代码复用,接口利于代码的扩展和维护。

    语法:

    修饰符 Interface 接口名 extends 父接口1,父接口2,…….{ //常量定义 //方法定义 }

    Class 类名 extends 父类名 implements 接口1,接口2…..{ //类成员 }

    说明

    ① :接口的命名规则与类名相同。如果是public,则该接口在整个项目中可见,如果省略,则该接口只在当前包可见; ② :接口中可以定义常量,不能定义变量。接口中的属性都会自动用public static final修饰,常量必须在定义时指定初始值。 ③ :接口中所有方法都是抽象方法。接口中方法都会自动用public abstract修饰。 ④ :和抽象类一样,接口也不能实例化,接口中不能有构造方法。 ⑤ :接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类。 ⑥ :接口的实现类必须实现接口的全部方法,否则必须定义为抽象类。

    一个类只能有一个直接父类,但可以通过implements实现多个接口。当类在继承父类的同时又实现了多个接口时,extends关键字必须位于implements关键字之前。

    接口表示一种能力。一个类实现了某个接口,就表示这个类具备了某种能力,程序中一个类可以实现多个接口。

    接口不仅弥补了JAVA只支持单继承的缺点,还利于代码的扩展和维护。接口类似于一个组件,需要时可以自由组装。

    接口和抽象类的区别在于:抽象类利于代码复用,接口利于代码维护。

    接口表示一种约定。接口体现了约定和实现相分离的原则,通过面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性和可维护性。

    面向接口编程就意味着:开发系统时,主体构架使用接口,接口构成系统的骨架,这样就可以通过更换实现接口的类来实现更换系统。

    怎样抽象出接口呢?

    ① :一种是用在层和层之间的调用。层和层之间最忌讳耦合度过高或修改过于频繁。 ② :一种是使用在那些不稳定的部分上。 良好的接口定义一定是来自于需求的,它绝对不是程序员绞尽脑汁想出来的。

    转载请注明原文地址: https://ju.6miu.com/read-665182.html

    最新回复(0)