Java的核心是面向对象编程,类是java面向对象程序设计的基础
面向对象阶段的关键字:
类:实际上就是一个新的数据类型
如果要new对象,并且要点出方法来,必须要在main()方法里面new
类修饰符及含义:
修饰符 |
含义 |
Public |
定义一个公共类,任何类都可以访问 |
Abstract |
定义一个抽象类,该类不能被实例化 |
Final |
定义一个最终类,该类不能有任何子类 |
Defallt(缺省) |
只能被同包中的类访问, |
成员方法:某个普通类中的方法
成员方法修饰符及含义:
修饰符 |
含义 |
Public |
可以在任何类中访问它 |
Protected |
本类、子类、同包类 |
Default(缺省) |
本类,同包类 |
Private |
本类 |
Static |
静态成员方法(类方法) |
Final |
定义一个最终方法,其功能不能再更改 |
Abstract |
定义一个无方法体的抽象方法 |
成员变量:某个普通类中的变量
成员变量修饰符及含义:
修饰符 |
含义 |
Public |
本类、子类、同包类、跨包 |
Protected |
本类、子类、同包类 |
Default(缺省) |
本类、同包类 |
Private |
本类 |
Static |
静态成员变量,为该类所有对象共享 |
Final |
必须在创建它的同时赋初值且不能修改 |
局部变量:普通类中的成员方法的里面定义的变量,局部变量随着成员方法的执行、结束而执行、销毁。
this关键字:this关键字被隐式地用于引用对象的成员变量和方法;this除了可以调用成员变量和成员方法之外,还可以作为方法的返回值。如:
这里在main方法里面不能直接输出s,因为s不是静态的,而main方法是静态的,静态方法只能调用静态的东西
Super:
This关键字可以在无参构造方法中使用this关键字调用有参的构造方法,但是使用这种方式只可以在无参构造方法中的第一句使用this调用有参构造方法。
静态变量:使用static修饰的成员变量称为类变量或成员变量,它保存在该类所占内存区的静态公共存储单元中,是该类的公共数据,为该类所有对象共享,而不属于某个特定对象,因此该类的任何一个对象都可以访问和修改静态变量的值;静态变量与实例变量的区别在于,每次创建类和新对象时,系统就会为该对象创建实例变量的副本,即该对象每个实例变量都有自己的存储空间,并可以通过对象名访问这些实例变量,而静态变量只在第一次调用类的时候,系统为它分配一次内存,不管该类创建多少新对象,所有对象都共享静态变量的值。
静态内容可以在本类或其他类中使用类名“ . ”运算符调用静态成员。
虽然静态成员也可以使用“对象 . 静态成员”的形式调用,但这样的形式通常不被鼓励使用,因为这样容易混淆静态成员和非静态成员。
静态成员方法: 类中的非静态成员方法可以访问静态成员,但静态成员方法只能访问类中的静态变量和其他静态方法。(粗解:静态东西的就是为了让其他类共享这个数据)
静态变量、常量和方法:由static修饰的变量、常量和方法被称作静态变量和方法。
常量:static final 修饰
重载:构造方法也有重载,其过程与普通方法一样,构造方法的重载目的是完成不同情况下对象的初始化
java中的重载与返回值无关的解释
抽象类:不能实例化对象,多态机制中,父类通常被定义为抽象类,比抽象类更方便的是接口。抽象类没有具体对象,定义抽象类的目的是将相关的类组织在一起,提供一个公共的基类 ,并让其他类来继承它
抽象类中可以没有抽象方法,但是含有抽象方法的类必须是抽象类
抽象方法:用abstract修饰的方法是抽象方法,抽象方法只有方法的声明部分,没有方法体的实现部分。声明抽象方法格式
Abstract void play();
abstract 关键字,和哪些关键字不能共存。
1,final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。,
2,private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。
而抽象方法出现的就是需要被复写。
3,static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。
可是抽象方法运行没意义。
接口:由抽象方法组成的集合
实例:类是对象的模板,对象是类的实例
构造方法:1,构造方法没有返回值,2,构造方法的名称与本类名称相同。3,构造方法也有重载!
如果类中没有明确定义构造方法,则编译器会自动创建一个不带参数的默认构造方法。如有定义,则不再有默认提供无参构造。
构造方法不能被继承,一般是new对象来使用。
构造方法不用void修饰,因为它本身就没有返回值!
构造方法的重载,其过程与普通方法一样,构造方法的重载目的是完成不同情况下对象的初始化
构造方法修饰词 |
含义 |
Public |
全局 |
Protected |
本类子类同包类 |
Private |
本类 |
Default |
本类,同包类 |
递归: 递归要带入进去,从最核心的地方向外扒拉,算出最里面的一层结果之后,将结果代入到上面一层,依次类推,得到结果
面向对象三大特性:封装、继承、多态
封装就是抽取相同的属性(变量)和行为(方法),封装成类(打包)
继承就是获得一个父类的部分属性或行为,这个父类也可以是其他类的父类(代码重用)
多态:依赖于抽象类和接口
牵一发而动全身的功能就让它们继承一个父类,将会发生改变的东西放到父类中,这样也算是达到了利用缺点变优点
0, 什么是面向对象?
1, 类和对象
a) 类是对象的模板
b) 对象时类的实例(实例化)
个人总结:
学习是一个不断加深不断扩展,不断挖掘的过程,基础是很关键的部分,所谓基础不牢地动山摇,就是这个道理,就像盖房子一样,上面的东西随便怎么盖,下面的东西是基本不会动的,底层的东西是经过层层筛选留到最后的,所以不会轻易去改变,因为改变的代价太大了,牵一发而动全身。上层的东西再怎么花哨都是从底层的基础做上去的,就算你会用框架,你也仅仅是会用,拿来主义,出个你不会的异常绝对够你喝一壶的,因为你只是代码的搬运工,照抄过来的东西是个人就会,那不叫技术,而我是想做一辈子编程的,我需要的是基础扎实,底层过人,你拿个框架来我能给你研究透,你说你用不用我?????
我的目标是坚定不移的,你一时兴起学一阵子,可我是打定主意干一辈子,孰重孰轻一目了然!
只要你肯做,只要你坚持,一辈子很长,你绝对可以成功!!!
行动是绝对的执行力!!!让自己动起来!
截图命令:snippingtool
画图命令:mspaint