--暑假第五天学习--
一.java面向对象语言
核心思想: 找适合的对象做适合的事情.
找对象的方式:
方式一: sun已经定义好了很多了类,我们只需要认识这些类即可创建对象使用。
方式二: 我们需要自定义类,通过自定义类创建对象。
在整理笔记的过程中对自己有疑问的概念使用代码验证或者推翻它。
自定义类三步骤:
1. 自定义一个类。
class 类{
事物 的公共属性使用成员 变量描述
事物的公共行为使用函数描述。
}
2. 可以通过类创建对象。
3. 访问(设置)对象的属性或者调用对象的方法。
成员变量与局部变量的区别:
(1). 自定义的位置区别:
1. 成员变量是定义在方法之外,类之内的变量。
2. 局部变量是声明在方法之内的变量。
(2). 作用上的区别:
1. 成员变量的作用描述一类事物的属性。
2. 局部变量的作用是提供一个变量给方法内部使用的。
(3). 生命周期的区别:
1. 成员变量随着对象的创建而存在,随着对象的消失而消失。
2. 局部变量是调用到了对应的方法执行 到了创建该变量的语句时存在,一旦出了自己的作用域马上从内存中消失。
(4). 初始值的区别:
1. 成员变量是有默认的初始值的。
2. 局部变量是没有默认的初始值的,必须要先初始化才能使用。
匿名对象: 没有引用类型变量指向的对象就称作为匿名对象。
匿名对象要注意的细节:
1. 一般不会给匿名对象的属性赋值,因为永远都没法获取到。
2. 两个匿名对象永远都不可能是同一个对象。
1. 一般不会给匿名对象的属性赋值,因为永远都没法获取到。
2. 两个匿名对象永远都不可能是同一个对象。
匿名对象好处:简化书写。
匿名对象的应用场景:
1. 如果调用一个对象的方法一次时,然后这个对象就不再使用,那么这时候可以使用匿名对象。
2. 可以作为实参调用一个函数。
二.封装
封装的步骤:
1. 使用private修饰需要被封装的属性.
2. 根据需要提供get或者set方法设置以及获取属性。
封装的好处:
1. 提高了数据的安全性。
2. 操作简单。
3. 隐藏了实现。
1. 提高了数据的安全性。
2. 操作简单。
3. 隐藏了实现。
注意:一般实体类的属性我们都会封装起来。
eg:
class Demo1
{
public static void main(String[] args)
{
int i = 10;
System.out.println("i="+i);
}
}
三.构造函数
构造函数的作用: 给对应的对象进行初始化。
构造函数的定义的格式:
修饰符 函数名(形式参数){
函数体...
}
构造函数要注意的细节:
1. 构造函数 是没有返回值类型的。
2. 构造函数的函数名必须要与类名一致。
3. 构造函数并不是由我们手动调用的,而是在创建对应的对象时,jvm就会主动调用到对应的构造函数。
4. 如果一个类没有显式的写上一个构造方法时,那么java编译器会为该类添加一个无参的构造函数的。
5. 如果一个类已经显式的写上一个构造方法时,那么java编译器则 不会再为该类添加 一个无参 的构造方法。
6. 构造函数是 可以在一个类中以函数重载 的形式存在多个 的。
1. 构造函数 是没有返回值类型的。
2. 构造函数的函数名必须要与类名一致。
3. 构造函数并不是由我们手动调用的,而是在创建对应的对象时,jvm就会主动调用到对应的构造函数。
4. 如果一个类没有显式的写上一个构造方法时,那么java编译器会为该类添加一个无参的构造函数的。
5. 如果一个类已经显式的写上一个构造方法时,那么java编译器则 不会再为该类添加 一个无参 的构造方法。
6. 构造函数是 可以在一个类中以函数重载 的形式存在多个 的。
疑问:创建对象时,jvm就会调用到对应的构造方法,那么我们以前没有学构造方法,那么
以前创建对象时,jvm是否也会调用构造方法呢?如果有?构造方法从何而来呢?
答:会调用, java编译器在编译的时候给加上去的。
jdk提供了一个java开发工具(javap.exe)给我们进行反编译的。
javap 反编译工具的使用格式:
javap -c -l -private 类名
疑问: java编译器添加 的无参构造方法的权限修饰符是 什么?
答:与类的权限修饰是一致的。
答:与类的权限修饰是一致的。
构造函数与普通 函数的区别:
1. 返回值类型的区别:
1. 构造函数是没有返回值类型 的,
2. 普通函数是有返回值类型的,即使函数没有返回值,返回值类型也要写上void。
2. 函数名的区别:
1. 构造函数的函数名必须要与类名一致,
2. 普通函数的函数名只要符合标识符的命名规则即可。
3. 调用方式的区别:
1. 构造函数是 在创建对象的时候由jvm调用的。
2. 普通函数是由我们使用对象调用的,一个对象可以对象多次普通 的函数,
4. 作用上的区别:
1. 构造函数 的作用用于初始化一个对象。
2. 普通函数是用于描述一类事物的公共行为的。
eg:
//婴儿类
class Baby{
int id; //身份证
String name; //名字
//构造函数
public Baby(int i , String n){
id = i;
name = n;
System.out.println("baby的属性初始化完毕!!");
}
//无参 的构造函数
public Baby(){
System.out.println("无参的构造函数被调用了..");
}
//哭
public void cry(){
System.out.println(name+"哇哇哭...");
}
}
class Demo2
{
public static void main(String[] args)
{
//创建一个baby对象
Baby b1 = new Baby(110,"狗娃"); //婴儿诞生 白户
System.out.println("编号:"+ b1.id +" 姓名:"+ b1.name);
b1.cry();
b1.cry();
}
}