公司动态
java面向对象OPP-三大特性(封装、继承、多态)+(接口、类)
类和对象的创建对象具体的个体如这辆车子这个人这只狗等概括起来就是万物皆对象类对象的抽象如车子的抽象所有车子的属性和行为如小汽车都是4个轮子能开动等。类是创建对象的模板由属性和行为两部分组成类的创建包括属性和方法如下packageoopDemo.test03;//class-类的关键字类名Car类的创建publicclassCar{publicintwheels4;//类的属性以及赋值voidrun(){//类的方法System.out.println(能开动);}}类对象的创建实例化后调用类方法packageoopDemo.test03;//class-类的关键字publicclassApplication{staticvoidmain(String[]args){//类对象的创建类对象car01Carcar01newCar();car01.run();}}构造器构造器名必须和类名一致构造器没有返回值类型任何类都含有构造器。如果没有显式地定义类的构造器则系统会为该类提供一个默认的无参的构造器。一旦在类中显式地定义了构造器系统就不会再为这个类提供默认的构造器了。快捷键Altinsert然后选择构造器可选择无参或有参构造器构造器如下注意下this关键字packageoopDemo.test03;publicclassCar{publicintwheels4;//类的属性voidrun(){//类的方法System.out.println(能开动);}publicCar(intwheels){this.wheelswheels;//this关键字指向当前对象super关键字指向父级对象System.out.println(我是构造器);}}封装隐藏对象的状态属性使用private关键字定义声明属性私有使用get或set方法设置、获取这个属性值高内聚低耦合类的内部数据操作都自己完成仅暴露少量的方法给外部使用如银行信息所有信息以及运行不暴露给我们知道你仅仅知道你自己的银行信息只能操作自己的银行卡作用①保护数据提高数据安全性②隐藏代码实现细节③统一接口④增强系统的可维护性参考代码以及注释packageoopDemo.test03;publicclassCar{publicintwheels4;//类的属性privateStringCarlicenseCode;//设置成私有属性达到封装voidrun(){//类的方法System.out.println(能开动);}publicvoidSetCarlicenseCode(){//为私有属性设置get方法this.CarlicenseCodeCarlicenseCode;}publicStringgetCarlicenseCode(){//为私有属性设置set方法returnCarlicenseCode;}publicCar(intwheels){this.wheelswheels;//this关键字指向当前对象super关键字指向父级对象System.out.println(我是构造器);}privatevoidtest(){//方法也可私有也是封装System.out.println(方法也私有了哦);}}继承extends关键字单继承只能有一个父类父类可以有多个子类如汽车—》大众汽车汽车—》奔驰汽车汽车—》宝马汽车他们的超级父类是ObjectpackageoopDemo.test03;publicclassBMWCarextendsCar{publicBMWCar(intwheels){super(wheels);}}方法的重写–方法可以重写属性不可子类继承父类时将父类的方法重写关键字 Override快捷键Altinsert然后选择方法重写然后选择需要重写的方法。具体操作可见构造器注意事项①方法名必须和父类相同②参数列表也要相同③修饰符可以扩大不可以缩小④抛出的异常范围可以缩小不可以扩大-----注意和重载的区别packageoopDemo.test03;publicclassBMWCarextendsCar{publicBMWCar(intwheels){super(wheels);}Override//父类方法重写voidrun(){super.run();}}多态一种事物的多种形态存在条件①有继承关系②子类重写父类方法③父类引用指向子类对象packageoopDemo.test03;publicclassApplication{staticvoidmain(String[]args){//car01和car02都是具体对象一个左侧是Car类实例化一个是BMWCar这就是多态Carcar01newBMWCar(4);BMWCarcar02newBMWCar(4);car01.run();}}抽象abstract关键字包括抽象类和抽象方法就是类的抽象具体由子类实现抽象方法也就抽象类的子类中的方法实现packageoopDemo.Test;//抽象类--关键字abstractpublicabstractclassAbstractDemo01{publicabstractvoiddosomething();//抽象方法没有方法体publicvoidtest(){//这个是普通方法有方法提System.out.println(----);}}抽象类的子类去实现抽象类packageoopDemo.Test;//抽象类的方法必须重写去实现他父类的方法publicclassAextendsAbstractDemo01{Overridepublicvoiddosomething(){System.out.println(重写的方法);}}接口接口就是约束就是规范。关键字interface如接口代码packageoopDemo.test03;//关键字interfacepublicinterfaceTimerService{voidtimer();//没有方法体}接口实现关键字implementspackageoopDemo.test03;//关键字implements TimerService--这个是接口这个UserServiceImpl是接口实现publicclassUserServiceImplimplementsTimerService{Overridepublicvoidtimer(){//接口需要方法重写System.out.println(实现接口timer方法);}}接口可以多个继承使用逗号隔开publicclassUserServiceImplimplementsUserService,TimerService{}