codecamp

第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语句
构造方法作用:给类中的字段进行初始化,可以用来创建对象。

初学(面向对象) Ⅰ 难点: ★★★★★

希望每一篇文章都能够对读者们提供帮助与提升,这乃是每一位笔者的初衷

感谢您的阅读 欢迎您的留言与建议

第4篇-JAVA基础
第6篇-JAVA面向对象Ⅱ
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }