第5篇-JAVA面向对象Ⅰ
- 每篇一句 :面向对象面向君,不负代码不负卿
- 初学心得 : 代码虐我千百遍,我待代码如初恋
- (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-03| JAVA面向对象 Ⅰ]
1.JAVA作为一种面向对象语言,具有以下基本概念:
● 多态
● 继承
● 封装
● 抽象
● 类
● 对象
● 实例
● 方法
● 重载
2.面向对象
什么是面向对象?:
面向对象是一种编程思想
通俗的说:面向对象是一种思考问题的思维方式
为什么使用面向对象以及它的作用
计算机语言为了更好的去描述现实生活中的事物,按照生活中的思考方式来定义,这样我们使用起来会更加方便
作用:将功能封装到对象里,强调的是具备某功能的对象;
面向对象的三个特征:
1.封装(Encapsulation)
2.继承(Inheritance)
3.多态(Polymorphism)
3.JAVA类和对象
类与对象的概念
● 类:类是一个模板,它描述一类对象的行为和状态。
(1).什么是类?类是分类和类别的意思
通过分类,可以区别不同的事物种类,
类是一组具有共同特性(属性)与行为(方法)的事物集合
(2).类与对象之间的关系
● 对象:对象是类的一个实例(对象不是找个男/女朋友),而是有状态和行为
例如,一只猫咪是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等
类表示一个共性的产物,是一个综合的特征,是一个个性的产物,也是一个个体的特征
类由属性和方法组成
属性:相当于一个个的特征
方法:相当于人的一个个的行为,如,说话,吃饭...
类的定义格式
/**
*类的定义格式代码
**/
[修饰符] class 类名{
1~n个构造方法;
0~n个字段;
0~n个方法;
}
/**
*定义一个Demo类
*类名和方法名:类名 首字母大写 方法名首字母小写
**/
class Demo{
String str = "Good"; //成员变量,也成为字段,类或对象所包含的数据,对类状态的一种描述
//方法,相当于类或对象的特征或行为
public void show(){
System.out.println("输出"+str); //执行输出语句
}
}
一个类可以包含以下类型变量:
● 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量
变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
● 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化
成员变量可以被类中方法、构造方法和特定类的语句块访问。
● 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型
对象的定义、创建以及使用格式
对象是根据类创建的,在Java中,使用关键字new来创建一个新的对象,创建对象需要以下三步:
● 声明:声明一个对象,包括对象名称和对象类型。
● 实例化:使用关键字new来创建一个对象。
● 初始化:使用new创建对象时,会调用构造方法初始化对象。
一个类要想真正的进行操作,则必须依靠对象,对象的定义如下:
类名称 对象名称 = new 类名称(); 这样的格式就产生了对象
如果想要访问类中的属性和方法(方法的定义),,则可以依靠以下语法:
1.访问类中的属性:对象.属性; 2.调用类中的方法: 对象.方法();
在JAVA中对象声明有两个含义:
1.声明对象:personper = null; //表示声明了一个对象,但是此对象无法使用,per没有具体的内存指向
2.实例化对象:per = new pcrson();//表示实例化了对象,可以使用
类名 对象名称 = new 类名(); //两步操作
类名 对象名称 ; //声明对象
对象名称 = new 类名(); //实例化对象
例:Demo demo = new Demo();
通过"对象名.对象成员"的方式来操作对象中的内容
4.static关键字
1.static关键字
使用static关键字修饰一个属性,声明为static变量实质上就是全局变量
使用static关键字修饰一个方法,在一个类中定义一个方法为static
无需本类的对象即可调用此方法
使用static关键字修饰一个类
2.内存结构分析
存在方法区,静态数据不属于对象,属于类,直接用类名调用属性,而不是用对象调用属性
无法从静态上下文中引用非静态:
静态属性和方法在类加载后就存到方法区内存中,此时,还没有产生对象,而普通方法和属性
属于对象,所以不能调用
3.声明static的方法限制
仅能调用其他的static方法
只能访问static数据
不能以任何方式引用this或super
static关键字特点:
随着类的加载而加载,优先于对象存在,被所有对象所共享,可以直接被类名调用
static关键字使用注意:
静态方法只能访问静态成员,但是非静态成员可以访问静态成员;
静态方法中不可以使用this,super关键字
主方法(main)是静态的
public static void main(String[] agrs){}
static关键字的使用:
用static 修饰的成员表示它属于这个类共有,而不是属于该类的单个实例
static 修饰的字段 == 类字段
static 修饰的方法 == 类方法
5.new关键字
new 表示创建一个对象,表示实例化对象,表示申请内存空间
什么是实例化:
代码在类中,类是抽象的,不是具体的,代码都是针对抽象来编写的,但是程序运行起来就需要用到具体的对象去执行
在编写完类以后,具体化成为实实在在的对象,实例化对象就是把类具体化为一个对象的过程
6.匿名对象
匿名对象就是定义一个没有名称的对象
该对象特点是只能使用一次,该对象会直接在堆中开辟内存空间
该对象使用后会成为垃圾对象,被GC回收
new 类名("").方法名(); //生成匿名对象,只能使用一次
匿名对象特点:
对方法或字段只进行一次调用;
new Car().show();
new Car().run();
可作为实际参数进行传递,只在堆内存中开辟空间,而没有在栈内存的引用
public void show(Car c){ }
new Car().show(new Car());
7.对象的引用
<br>//1. 创建了一个Demo1 的实例(对象) <br>Demo1 demo = new Demo1();//2. 把这个Demo 实例赋给 demo 变量 <br>demo.brand="HelloWorld"; //引用变量指向对象,也就是说引用型变量存放的仅仅是一个引用 <br> ```
8.this关键字
this关键字特点:this表示当前对象。
调用类中的属性、调用类中的方法或构造方法、表示当前对象
当前对象 ←→ 当前正在调用实例成员的对象
换言之:谁调用了方法,谁就是当前对象。
什么时候使用this关键字呢?
1.方法间的相互调用; 2.this.字段;
3.构造器中相互调用,但是此时this([参数])必须写在构造方法第一行。
4.this不能用在static修饰的方法里和static修饰的代码块里;
9.import语句
JAVA包主要用来对类和接口进行分类
当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类
Import语句通俗的说就是引入或导入的意思
例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类
import java.io.*; //*星号表示寻找某个包下被使用到的全部类
10.JAVA常用包介绍
<br>java.lang : 语言核心类,系统自动导入 <br>java.util : java 工具类、集合框架类和接口 <br>java.net : 网络编程接口和类 <br>java.io : 流的接口和类 <br>java.text : java格式化相关类 <br>java.sql : jdbc相关接口和类 <br>java.awt : 抽象窗口工具集相关接口和类 <br>java.swing :图形用户界面相关接口和类(可跨平台) <br> ```
11.JAVA访问修饰符
| 修饰符 | 类内部 | 同一个包| 子类 | 任何地方 |
| :-------- | --------: | :------: | :------: | :------: |
| private | ✔ | | | |
| default | ✔ | ✔ | | |
| protected | ✔ | ✔ | ✔ | |
| public | ✔ | ✔ | ✔ | ✔ |
private(私有的):类访问权限:本类内部可以访问,不能继承到子类
default(默认的):什么都不写,包访问权限:本类内部可以访问,同包其他类也可以访问,同包可继承
protected(保护的):子类访问权限:本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问,能继承到子类
public(公共的):公共访问权限:任何地方都可以访问,能继承到子类
12.构造方法
什么是构造方法?构造方法就是类构造对象时调用的方法,用于对象的初始化工作
构造方法是实例化一个类的对象时,也就是new的时候,最先调用的方法
构造方法的定义:是在类中定义,定义格式,方法名称与类名相同,无返回值类型声明
对象实例化语法:
Demo2 de = new Demo2(); //new Demo2后面有括号,带括号表示调用了方法,此时调用的方法就是构造方法
每个类都有构造方法,如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法
在创建一个对象的时候,至少要调用一个构造方法,构造方法的名称必须与类同名,一个类可以有多个构造方法
对象的产生格式:
类名称 对象名 = new 类名称();
因为有(),所以是方法,实际上它就是构造方法,并且是非私有的构造方法。
如:Demo3 de = new Demo3();
构造方法特点:
方法名与类名相同,不用定义返回值类型 ,不需要写return语句
构造方法作用:给类中的字段进行初始化,可以用来创建对象。
初学(面向对象) Ⅰ 难点: ★★★★★
希望每一篇文章都能够对读者们提供帮助与提升,这乃是每一位笔者的初衷
感谢您的阅读 欢迎您的留言与建议
- 新浪官方微博: @中國熱點影視傳媒
- Github博客: https://github.com/jeep711/jeep711.github.io
- Blog Garden:http://www.cnblogs.com/JEEP711/
- W3C/Blog:http://www.w3cschool.cn/jeep711blog/
- CSDN/Blog:http://blog.csdn.net/jeep911
- 51CTO/Blog:http://jeep711.blog.51cto.com/
- 码云:http://git.oschina.net/JEEP711/jeep711.github.io
- 邮箱: <jeep711@qq.com>,<JEEP-711@outlook.com>