本文参与思维技术征稿,正在阅读的欢迎加入。在前端工作的这两年里,我也接触到了后端领域,比如PHPNode,和他们一起做过一些demo和privatework。从职业发展的角度来说,了解后端还是不错的。开发流程,整个环节很清晰,对了解后端,以后创业或者接私活都有好处。而现在在Web后台领域,Java是老大哥,Spring全家桶走遍了天涯海角,所以最近又重新拿起了Java,从前端到全栈。这是我最近花了一个星期复习的Java面向对象总结,希望对你有所帮助。导读目录学习路线这条学习路线是我跟着up主视频总结的。重新学习Java1.面向对象OOP1.很全面。1关于super和thissuper的区别super调用父类的构造函数必须在子类的构造方法中。第一个super必须只出现在子类方法或构造方法中。super和this在调用构造方法时不能同时出现。this代表的对象不同:this:调用者本身。父类对象的应用1.2多态性同一个方法根据发送对象的不同可以采取多种不同的行为。一个对象的实际类型是确定的,但是有很多类型的引用可以指向一个对象。多态的存在条件具有继承关系。子类重写父类的方法。父类引用指向子类对象。注意,如果子类重写父类方法,父类对象就是被调用子类重写方法的类型转换类型转换目的:方便方法调用,降级,升级,减少代码重复,但它也有缺点,比如精度损失向上转换(childtoparent)Lowtohigh可以直接转换为down(parentrotor)Hightolow需要强制转换为highlow之后,再cast,subtypechildobject=(subtype)parentobjectPersonper=newStudent()Studentstudent=(Student)per//((Student)per).每个方法/属性。子属性和方法1.3static1.3.1static目的在不创建对象的情况下调用方法和属性(静态)。static可以用来修饰类成员方法和类成员变量,可以编写静态代码块来优化程序性能。1.3.2static静态方法静态方法一般称为静态方法,静态方法可以不依赖任何对象访问,所以静态方法没有this。类的非静态成员变量和非静态成员方法不能在静态方法中访问,因为非静态成员方法/变量必须依赖于特定的对象才能被调用。可以在非静态方法中访问静态成员方法/变量。1.3.3static静态变量静态变量和非静态变量的区别在于,静态变量是所有对象共享的,在内存中只有一份,当且仅当类第一次加载时才会初始化。非静态变量由对象拥有,并在创建对象时初始化。存在多个副本,每个对象拥有的副本互不影响。静态成员变量的初始化顺序按照定义的顺序进行初始化。1.3.4静态代码块static关键字用于组成静态代码块以优化程序性能。静态块可以放在类中的任意位置,类中可以有多个静态块。第一次加载类时,每个静态块都会按照静态块的先后顺序执行,并且只会执行一次。可以把方法中的常量放到static块中,这样就不会每次调用都重新创建,造成空间浪费。公共类测试{私人静态日期日期;私有静态SimpleDateFormat格式化程序;static{formatter=newSimpleDateFormat("yyyy-MM-dd'at'HH:mm:ssz");date=newDate(System.currentTimeMillis());}publicstaticvoidmain(String[]args){getTime();}publicstaticvoidgetTime(){System.out.println(formatter.format(date));}}上面的例子是用来获取当前时间的,当getTime静态方法被调用时,不会重复创建一个DateSimpleDateFormat执行顺序:优于构造函数1.3.5static注意static关键字不能改变访问权限类中的成员,只有private、public和protected可以更改访问权限。通过这个,你可以在非静态方法中访问静态方法和静态成员publicclassTest{privatestaticDatedate;私有静态SimpleDateFormat格式化程序;privatestaticStringname="前端自学社区";publicstaticvoidmain(String[]args){Testtest=newTest();测试.getStatic();}publicstaticvoidfunc(){System.out.println("我是静态方法");}publicvoidgetStatic(){System.out.println(this.name);这个函数();}}例子中,在非静态方法中,可以通过this直接访问的静态方法和静态成员,然后通过类实例化,对象中的静态属性和静态方法可以通过非静态方法1.4抽象类abstract我们先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,没有具体的实现。抽象方法的声明格式为:abstractintgetNum();1.4.1什么是抽象类?abstract关键字修饰的类是抽象类,包含属性和抽象方法。抽象类包含没有具体实现的方法,因此不能用抽象类创建对象。子类继承抽象类时,必须实现抽象类的抽象方法,子类的实例化对象具有抽象类的属性。公共抽象类动物{抽象字符串名称;abstractvoideat();}1.4.2抽象类的作用是什么?抽象类主要用于抽取事物的共性,抽取属性和方法,子类继承抽象类以提高代码效率。1.4.3抽象类与普通类的区别抽象方法必须是public或者protected(因为如果是private就不能被子类继承,子类也不能实现该方法),默认是public。抽象类不能用来创建对象;如果一个类继承自一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,那么子类也必须定义为抽象类。1.5接口interface1.5.1什么是接口?它是行为的抽象,接口通常被声明为接口。类通过继承接口来继承接口的抽象方法。当一个类需要使用这些抽象行为时,需要实现接口implements,并且必须实现接口中的方法。publicinterfaceperson{voidstudy(){}}1.5.2接口特性接口中的每个方法也是隐式抽象的,接口中的方法会被隐式指定为publicabstract(只有publicabstract,其他修饰符会报错).也可以留空,默认是publicabstract。publicinterfaceAniaml{publicabstractvoideat();//abstractmethod==equivalenttovoideat();}接口可以包含变量,但是接口中的变量会被隐式指定为publicstaticfinal变量(而且只能是public,如果用private修饰,会报编译错误会被举报)。接口中的方法不能在接口中实现,只有实现接口的类才能实现接口中的方法。1.5.4接口的作用接口的使用可以继承多个源头,这样可以针对不同的需求组合不同的继承层次。接口指定了必须实现的实现类、方法和属性。1.6接口和抽象类在Java中,OOP的抽象可以体现为两种形式:接口和抽象类,它们有很多相似之处。1.6.1接口和abstract的区别抽象类可以提供成员方法的实现细节,但是接口中只能存在公共抽象方法;抽象类中的成员变量可以是多种类型,而接口中的成员变量只能是publicstaticfinal类型;接口不能包含静态代码块和静态方法,而抽象类可以有静态代码块和静态方法;一个类只能继承一个抽象类,但是一个类可以实现多个接口。接口接口是对事物的行为[方法]进行抽象,抽象类是对事物的共性进行行为和属性的抽象。1.6.2接口示例interfacepublicinterfacePeopleInterface{voideat();无效研究();voidplay();}abstractpublicabstractclassPeople{Stringname="Human";abstractvoidwatch();}子类publicclassTestextendsPeopleimplementsPeopleInterface{publicstaticvoidmain(String[]args){Testtest=newTest();//子类具有抽象类的属性System.out.println(test.name);测试.吃();}@Overridepublicvoideat(){System.out.println("eatingfunction");}@Overridepublicvoidstudy(){System.out.println("学习函数");}@Overridepublicvoidplay(){System.out.println("播放函数");}@Overridevoidwatch(){System.out.println("监视函数");}}上面的例子讲的是类的关系和接口抽象类的关系。首先,Test类继承了People抽象类,然后实现了PeopleInterface接口。子类继承抽象类时,必须实现抽象类的抽象方法。当子类被实例化时,它具有抽象类的属性。子类在实现接口时,必须实现接口中的所有接口行为。结束语以上就是对Java面向对象的总结和分享,希望对大家有所启发,欢迎大家多多指教!
