黑马程序员_四、面向对象(类与对象、构造方法、this关键字、静态)
来源:互联网 发布:梨园 淘宝城 编辑:程序博客网 时间:2024/04/29 03:47
-------android培训、java培训、期待与您交流! -------
四、面向对象(类与对象、构造方法、this关键字、静态)
这两天的课已经换老师了讲,这个老师的技术很牛,而且思路条理很清晰,上课笔记注释非常详细,非常喜欢这个老师讲课,
不光教我们基础的技术方面的知识,而且经常传授一些以后工作的经验和面试方面得技巧,总体非常不错。话说我们每天都要演讲,
这个真的对我们各个方面都有很大的帮助,我到时候结束后该唱一首什么歌好呢,哈哈跑题了。
----------------------------------------------------------------------------------------------------------------------------------------
一、面向对象:(面试经常提问,最好举实例说明)
相对于面向过程而言的。
关注最终的结果。
面向对象和面向过程都是一种思想。
面向过程:
注重操作的每一个步骤和细节。
思想特点:
是一种符合人们思考习惯的思想
可以将复杂的事情简单化
将程序员从执行者转换成了指挥者
举例:
去旅游。
面向过程:
签证 -- 机票 -- 去机场 -- 安检 -- 飞机行驶 -- 到目的地 -- 看朋友 -- 旅游
面向对象:
找个旅行社
把大象装进冰箱:
1、打开冰箱门 2、放进大象 3、 关闭冰箱门
代码体现:
面向过程:
class Demo{public static void main(String[] args){//System.out.println("打开冰箱门");//System.out.println("放进大象");//System.out.println("关闭冰箱门");open();in();close();}public static void open(){System.out.println("打开冰箱门");}public static void in(){System.out.println("放进大象");}public static void close(){System.out.println("关闭冰箱门");}}
面向对象:
1、把大象装进冰箱。2、打开冰箱门 3、放进大象。4、关闭冰箱门
提取对象:名词提取法。(UML统一建模语言)
class 大象{public static void in(){System.out.println("放进大象");}}class 冰箱{public static void open(){System.out.println("打开冰箱门");}public static void close(){System.out.println("关闭冰箱门");}}class Demo{public static void main(String[] args){冰箱对象.open();大象对象.in();冰箱对象.close();}}
二、类与对象
java语言就是为了描述现实世界中的事物。
在Java语言中,最基本的单位是:类
所以,我们是用类来描述一种事物的。
事物通过类来体现:
类:
特征 -- 成员变量(属性,字段)
行为 -- 成员方法(函数)
类与对象:
类是一类事物的抽象。
对象:对象是类的实例,具体的存在的个体。
在使用类中成员时,必须创建对象使用。
包含main的类是测试类,不包含的类是描述事物,
在一个类文件中,可以有多个类。
文件名称和带main方法的类名称一致。
如果一个文件中有多个类,文件名称必须和public类名一致。 类中方法如果不家public会影响导包后使用不了。
用代码体现:如下
//这是学生类class Student{//学号String sid;//姓名String name;//年龄int age;//学习public void study(){System.out.println("好好学习,天天向上");}//睡觉public void sleep(){System.out.println("早睡早起");}//吃饭public void eat(String type){System.out.println("我今天想吃:"+type);}public static void main(String[] args){//创建学生类对象//数据类型 变量名 = 初始化值;Student s = new Student();//调用成员方法s.study();s.sleep();s.eat("宫保鸡丁");//在给成员变量赋值前,使用成员变量值,成员变量有默认值。System.out.println(s.sid+"***"+s.name+"***"+s.age);//给成员变量赋值s.sid = "001";s.name = "张三";s.age = 23;//使用赋值后的成员变量System.out.println(s.sid+"***"+s.name+"***"+s.age);}}
成员变量和局部变量的区别
A:访问
成员:定义在类中,方法外的变量叫成员变量,在类中都可以被访问到。
局部:局部变量定义在方法内部,以及方法的参数,或者语句内的变量。
只能在局部中使用。
B:存储位置
成员:成员变量随着对象的创建而存在,存在于堆内存中。随着对象的消失而消失。
局部:随着方法被调用,或者语句被执行而存在,随着语句执行完毕,或者方法调用完毕而消失。
C:初始化值
成员:有默认值。(java中用的是nuicode编码表)
byte,short,int,long 0
float,double 0.0
boolean false
char '\u0000'
局部:没有默认值,要使用,必须声明,赋值,使用。
匿名对象:
没有名字的对象(因为没有变量指向对象,所以执行完,在内存中就被释放)
应用场景:
A:方法只用一次
B:可以作为实际参数传递
封装: 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
将变化隔离,便于使用,提高重用性,提高安全性。
类的成员变量是不能让其他的类直接访问的。
private关键字:
是一个权限修饰符。
用于修饰成员(成员变量和成员方法)
被私有化的成员只在本类中有效。
私有的成员变量,都会配对的出现getXxx()/setXxx(int xxx)方法
代码体现:
class Student{private String name;private int age;public void setName(String n){name = n;}public String getName(){reutrn name;}public void setAge(int a){age = a;}public int getAge(){return age;}}
构造方法:
A:用途
用于对象的创建并进行对象的初始化。
B:特点
a:构造方法名与类名相同
b:没有具体的返回值类型
c:没有返回值
C:注意事项
a:如果你没有给出构造方法,系统会默认给出一个无参构造
b:如果你给出了构造方法,系统将不再给出默认构造。
这个时候,要么给出无参构造,要么你不使用无参构造。
D:构造方法还可以给成员变量赋值
this关键字
A:代表当前对象的一个引用,谁调用方法,在该方法内部的this就代表谁。
B:this的使用场景
a:局部变量隐藏成员变量
b:构造方法调用其他构造方法(不推荐)
注意:必须作为第一条语句存在。
格式:this(参数)
三、静态
static
(1)static 静态的意思,可以修饰成员变量,也可以修饰成员方法。
(2)静态修饰的成员和非静态修饰的成员的区别
A:加载顺序和消失
静态的内容是随着类的加载而加载,随着类的消失而消失。生命周期长。
非静态的成员随着对象的创建而存在,随着对象的消失而消失。
B:存储位置不同
静态的内容是存储在方法区的静态区。
非静态的成员是存储在堆内存。
C:调用不同
静态的内容可以直接被类名调用,也可以被对象调用。
非静态的成必须通过对象调用。
D:理解不同
静态内容修饰的成员一般是所有对象的共享数据
非静态成员是每个对象特有的数据。
(3)静态和非静态的调用
A:非静态的方法调用
a:非静态的成员变量
b:静态的成员变量
c:非静态的方法
d:静态的方法
B:静态的方法调用
a:静态的成员变量
b:静态的方法
注意:静态只能访问静态。
在静态方法内部不能有this关键字。
(4)什么时候使用静态:
A:工具类的时候,一般使用静态。(Math)
B:当数据是被所有对象共享的时候,用静态修饰。
代码块:
(1)由{}括起来的代码。
(2)分类:
局部位置:局部代码块
让变量的生命周期缩短,提高程序的效率。
成员位置:构造代码块
在每个构造方法执行的时候,都会执行。
(3)静态代码块
把构造代码块用static修饰。
特点:静态代码块只执行一次。
执行顺序:
静态代码块 -- 构造代码块 -- 构造方法
Person p = new Person()到底在内存中做了哪些事情?
A:把Person.class加载到内存
B:在栈内存开辟一个空间给p变量
C:在堆内存开辟空间给new Person()
D:采用默认值对成员变量初始化(隐式初始化)
E:采用显示值对成员变量初始化(显示初始化)
F:如果有构造代码块,就执行构造代码块的初始化。(方法也会被加载到方法区)
G:执行构造方法里面的变量初始化。
H:到此,对象在内存中创建完毕。
I:把堆内存的地址值给栈内存的p变量
java中的数据传递问题
java中只有值传递:
基本类型值
地址值
A:基本类型
形参的改变对实参没有影响
B:引用类型
形参的改变直接影响实参
main方法解释(面试题)
public static void main(String[] args)
public:最大的访问权限。
static:为了访问被jvm调用main方法。
void:jvm得到这个值没有意义。
main:jvm只认识这个名字。不是关键字。
String[] args:接收参数提供的数组。
总结:这两天的知识点挺多的,老师也讲的很细,我笔记也做的很详细。
主要理解面向对象的思想,会举例说明,成员和局部变量的区别。
能够自己手动画出对象创建的内存图,掌握封装的特性、构造方法和this的用法
最后就是静态的特点及什么时候使用静态,代码块和静态代码块的执行顺序。
-------android培训、java培训、期待与您交流! -------
- 黑马程序员_四、面向对象(类与对象、构造方法、this关键字、静态)
- 黑马程序员—Java面向对象(类和对象、封装、构造方法、this关键字、static关键字)
- 黑马程序员——Java面向对象之构造方法、静态、this关键字
- 黑马程序员-面向对象概述 构造函数与this关键字
- 黑马程序员_五 【初识面向对象】【类、构造方法、对象】【封装、继承、多态】【this、super】
- 黑马程序员_Java基础_面向对象(概述、类与对象关系、成员变量、封装private、构造函数和构造代码块、this关键字)
- 黑马程序员——学习日志4面向对象(概念,类与对象,封装,构造函数,this关键字)
- 黑马程序员 Java基础<一>---> 面向对象与类之概述(匿名对象、封装、构造函数、this、静态等)
- 6.1面向对象(介绍,类与对象,封装,this关键字,构造方法,static关键字)
- 黑马程序员 Java面向对象(封装,构造函数,this关键字,静态static)
- 黑马程序员-----java面向对象之封装、构造函数、this关键字、static静态总结*
- 黑马程序员--面向对象之一:面向对象概念、类和对象的关系、封装、构造函数、this关键字、static关键字
- 黑马程序员——高新技术---Java基础语法—面向对象_构造方法,static 关键字
- 黑马程序员---面向对象:this关键字
- 黑马程序员_面向对象之构造方法
- Java面向对象-构造方法,this关键字
- Java面向对象-构造方法,this关键字
- 黑马程序员_面向对象关键字static
- Joomla制作的网站如何制作ico图标
- DES、RSA算法实现
- NFC SWP移动支付解决方案技术分析
- objective-c : 使用FSM实现自动售水机模型
- 平台设备使用介绍 .
- 黑马程序员_四、面向对象(类与对象、构造方法、this关键字、静态)
- yii framework 常用 extension
- USB驱动开发(1) .
- C#.NET开发中常用的技术问题汇总(持续更新)
- NFC规范与测试
- C#项目实例中读取并修改App.config文件
- USB驱动开发(2) .
- Android中Parcelable接口的应用
- USB驱动开发(3) .