A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、封装概述(掌握)
1、概念(掌握)
     是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式(换句话说就是将属性私有化,并提供共有的方法访问)

2、private关键字(理解)
     可用于修饰成员内容,包括成员变量和成员方法
     被他修饰完毕后的内容,在其他类中是不能直接访问的,换句话说就是被private修饰的内容只能在本类中使用
3、注意(掌握)
     private仅仅是封装的一种体现,因为类,函数等其实也是一个封装的体现

4、为什么要写getter/setter方法(掌握)
     从思想上来说,因为属性私有化,只能在本类使用,其他类要想使用就需要提供get方法和set方法
     从需求上来讲,set和get方法 不一定必须出现,他俩是相互独立的
     而且set方法和get方法的名字可以随便起,只不过形成一个规范了,大家通过方法给私有属性赋值的时候,形成一个默认的规则,就是给属性赋值的方法以set开头,获取属性值的方法以get开头

5、实例变量 和类变量
     类变量也叫静态变量,也就是在变量前加了static 的变量;
实例变量也叫对象变量,即没加 static 的变量;
区别在于:
   类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象

2、构造方法(掌握)
1、构造方法的特点(掌握)
     A、方法名必须和类名保持一致
     B、没有返回值类型并且没有具体的返回值

2、构造方法的作用(掌握)
      给对象的属性初始化

3、注意事项(理解)
     A、如果没有明确给出构造方法,那么系统会默认给出一个无参构造方法
     B、只要明确给出构造方法,系统将不在提供无参构造(以后必须手动给出无参构造,因为可以避免很多错误发生
     C、构造方法的重载体现在参数列表不同
     D、(自己补充)构造方法的重载是构造方法的重载,方法的重载是方法的重载,两者没有关系,即使构造方法名和普通方法名一样,他们也不存在重载

4、给私有的成员变量赋值的方式(掌握)
     A、通过set方法,推荐使用
     B、通过构造方法
     C、在定义成员变量的时候手动赋值(private String name = “yongliang”;)
     //D、通过反射中的Field类的对象给对象的属性赋值(以后学)

5、一个类中构造方法应该定义几个?
     这个没有具体的规定,自己想写几个就写几个,看需求。可以一个都不写,系统会提供一个默认的,我一般都会定义一个无参构造,和一个有参构造,该有参构造初始化该类中的所有成员变量
3、构造方法和setter方法区别(掌握)
1、区别
     构造方法是在创建对象的时候给成员变量赋值,并且只能赋值一次
     set方法是在创建完对象以后对成员变量的值进行修改,或者赋值,可以多次
     最终目的:都是给成员变量赋值,只不过实现方式不一样

2、总结
     爱用哪个用哪个
4、this关键字(掌握)
1、概念(理解)
     this代表其所在方法所属对象的引用,哪个对象调用方法,方法内部就有一个隐含的this代表这个对象(谁调用,this就代表谁)(重点)
     简单点说:谁调用,this代表谁
2、应用场景(作用)
     用于解决局部变量隐藏成员变量的问题
     简单点说:通过this关键字可以直接调用成员变量
5、封装/this之标准代码(掌握)

1、以后我们必须按照这样去写
2、有这样一个问题,有些同学说构造方法是给成员变量赋值的,set方法也是
给成员变量赋值的,到底用哪个?
首先他们都是给成员变量赋值的,但是构造方法是在初始化对象的时候赋值,并且只能给成员变量赋值一次。而set方法是在初始化完对象之后给对象赋值的,可以无限次调用赋值。
总结:想用哪个用哪个,看心情
6、代码块(掌握)
1、概述
     由{}扩起来的代码称之为代码块,类或者方法也可认为是代码块,但是一般不这么说,我们平时所说的代码块指的是孤零零的{}
2、代码块作用
     局部代码块作用
     让变量尽可能早的从内存中消失,提高效率
     构造代码块作用是
     把所有构造方法中的共同的内容定义在构造代码块中,提高代码复用性,代码块先于构造方法执行,但是一般不用,最终目的初始化成员变量
     工作中用的很少,主要应对面试
7、对象初始化过程(掌握)

class Person{
private String name = “haha”;
private int age = 10;
{
System.out.println(name + “***” + age);
naem = “hello”;
age = 20;
System.out.println(name + “***” + age);
}

//get… set…
}

Person p = new Person();
System.out.println(p.getName() + “***” + p.getAge());

A:把 Person.class文件加载到内存 (类加载器 )
B:在栈内存开辟一个变量空间,给 p使用
C: new Person()就会在对内存中开辟空间
D:方法进方法区,有类名做标记,并且,同时成员变量进堆内存并给出了默认初始化值
name:null
age:0

E:对成员变量进行显示初始化 (是因为定义成员变量的时候给赋值了 public int age = 34;)
name:hello
age:20
F:如果有构造代码块,可以在构造代码块中对成员变量赋值
name :world
age:30

H:到此为止,对象初始化完毕
I :把堆内存对象的首地址赋值给栈内存的 p变量

7、static关键字概述
1、概述
     1、static 可以修饰成员变量和成员方法
     2、被static修饰的成员有一个最大的特点,就是可以被该类下所有的对象共享

2、什么时候用
     多个对象共享某一数据的时候,我们就把这个数据用static修饰.举例:小鸡吃食
3、特点(掌握)
     1、被static修饰的内容随着类的加载而加载,优先于对象存在
     2、可以直接通过类名调用
     3、被该类下所有对象共享

4、注意事项
     1、在静态方法中是没有this关键字,因为静态是随着类的加载而加载。而this是对象创建才存在的
     2、静态方法只能访问静态成员变量和静态成员方法 一句话 静态只能访问静态
     3、静态内容可以通过对象调用,也可以通过类名调用。推荐使用类名调用
8、不同JAVA文件中类的方法的调用(理解)
     一个Java文件里面的类去调用另一个JAVA文件里面的类,编译的时候有两种方式,例如A类调用B类
     第一种方式:先编译B类,在编译A类
     第二种方式:直接编译A类,B类会自动编译
9、帮助文档制作(了解)
     javadoc -d doc -author -version Demo.java
     -d 文件目录 (这表示当前目录doc文件夹)
     author –version需要提取的信息

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马