1.面向对象
首先在java中,肯定都会听到这样一句,万物皆是对象。那么什么是对象?
1.如何描述对象:
静态的特征:眼睛里能看到的东西
动态的功能:能干嘛,可以干嘛
那么对象是如何产生的?对象是通过类来new出来的,没有对象,new一个!!!!
2.什么是类??
类是多个对象之间的共性,是对象的抽象,用于描述一组对象的共性
特点:
类中只有变量和方法
变量就是静态的属性
方法就是动态的功能
3.类和对象之间的关系
类是对象的抽象
对象是类的具体实例
2.类
类是用来描述一组对象静态和动态的特征
静态的特征称之为属性,例如:身高,体重,颜色,大小
动态的特征称之为行为/功能,例会,会吃饭,会喝水,会陪主人玩…
具体到代码中:
属性就是变量
行为就是方法
所以总结起来,类中只能有变量和方法
代码实例:
类中的变量(属性):
类中的方法:
3.对象
对象是有类new出来的
例如:
类和对象的关系就好比锅和模具之间的关系:锅是由模具产生出来的,现有模具才有锅。
4.构造方法
为什么要有构造方法
构造方法的功能主要是为了构造对象,在创建一个类完成的时候,系统会自动默认一个构造方法用来构造对象,但是由于有参无参,参数的不同。所有类中要求至少有俩个重载的构造方法,一个有参一个无参。所以需要创建构造方法
案例:
5.this关键字
this指代调用当前方法的那个对象
6.static关键字
静态,可以修饰方法,称之为静态方法,又可以修饰属性,称之为静态属性
静态即是类,静态方法称之为类方法,静态属性称之为类属性
不加static的,是成员属性和成员方法,是对象的成员,需要通过对象来调用
静态方法:
静态方法(类方法),不可以直接发起对成员属性和成员方法的调用(有了类,不一定有对象)
成员方法能发起对静态属性和静态方法的调用(有了对象,一定有类)
静态代码块:
静态代码块是用来把类加载到内存中使用的,在构造方法执行之前执行,
但只会执行一次,他对成员方法和成员变量都不能调用
用来做一些类启动的准备工作
总结:
1.静态的就是类的,需要类名去调用
2.有了类不一定有对象(静态方法中不能发起对成员方法和成员属性的调用)
3.有了对象一定是有类(成员方法中可以直接调用静态的方法和属性)
4.static{}(静态代码块)最先被执行,且只执行一次
5.自定义静态方法使用场景较少,静态属性使用较多,一般作为计数器使用
7.继承
继承是什么?继承的好处?继承的特点是什么?
定义:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
好处:继承可以减少代码冗余,提高代码的可复用性
允许开发人员创建分等级层次的类
特点:1.子类去继承父类的非私有属性和行为
2.私有属性和行为不能被继承
3.构造方法不能被继承
4.java中的继承都是单继承,可以实现多重继承
案例:
创建一个Person类,定义属性和方法
在创建一个student类来继承Person类
可以发现学生类中的属性name,age,birthday 方法 showInfo()都有,是由Person父类中继承过来的,构造方法不能继承过来所以必须自己手写!并且除了可以继承父类中的方法,你也可以在student类中自己写别的方法study();
8.super关键字
和this关键字使用类似,指代父类/超类对象
this关键字指代调用当前方法的那个对象,this关键字也可以调用自己的构造方法
super关键字指代调用当前方法的那个对象的父类对象,super关键字也可调用自己父类的构造方法
1.可以调用父类的属性和行为
2.super()可以调用父类的构造方法,当时此句如果出现在子类构造方法中,必须是第一句
3.当子类构造方法中没有super();系统会默认添加一个到第一位
9.方法的重写
在继承过程中,子类中从父类继承来的方法无法满足自己的需求时,可以在子类中对父类方法进行完善,这个完善过程叫做方法重写(override),方法的重写相当于在子类中覆盖父类中的方法。
重写的要求:
1.首先必须要有继承
2.子类用自己的方式去改写了继承父类的方法的方法体
继承的语法:
1.方法上一定要有@override这样的注解来标识改方法是重写
2.重写的方法不能拥有比父类更严格的权限修饰符
3.重写的方法和被重写的方法具有相同的返回值,方法名,参数列表
案例:
重写eat()方法
10.多态
定义:所谓多态是指同一种行为在不同的对象身上有不同的表现形式。例如,H20,在不同的环境下有不同的状态
在这里定义一个父类animal类,在其中有eat()方法:
在创建子类Dog类
创建子类Cat类
通过Dog类和Cat类对animal类的继承,当子类调用animal类中的eat()方法只需要在各自的类中重写改方法就行,而在main程序中可以通过构造各自的对象例如:animal a=new Dog();用a来进行调用Dog中的eat方法,同时也可以animal c=new Cat(),c来调用Cat中的eat方法,这就是多态,以后可以在创建一些子类来继承父类animal类,这样就不需要重复创建子类中共有打方法,直接在父类中继承过来就行,可以减少代码的冗余,并且程序的可扩展性增强了