java之路 面向对象基础
2016-06-15 12:53
120 查看
/* 对象:真实存在的唯一的事物。 类:同一种类型的事物公共属性与公共行为的抽取。 java面向对象语言: 核心思想:找适合的对象做适合的事情. 找对象的方式: 方式一:sun已经定义好了很多了类,我们只需要认识这些类即可创建对象使用。 方式二:我们需要自定义类,通过自定义类创建对象。 在整理笔记的过程中对自己有疑问的概念使用代码验证或者推翻它。 自定义类三步骤: 1.自定义一个类。 class类{ 事物的公共属性使用成员变量描述 事物的公共行为使用函数描述。 } 2.可以通过类创建对象。 3.访问(设置)对象的属性或者调用对象的方法。 成员变量与局部变量的区别: 1.自定义的位置区别: 1.成员变量是定义在方法之外,类之内的变量。 2.局部变量是声明在方法之内的变量。 2.作用上的区别: 1.成员变量的作用描述一类事物的属性。 2.局部变量的作用是提供一个变量给方法内部使用的。 3.生命周期的区别; 1.成员变量随着对象的创建而存在,随着对象的消失而消失。 2.局部变量是调用到了对应的方法执行到了创建该变量的语句时存在,一旦出了自己的作用域马上从内存中消失。 4.初始值的区别: 1.成员变量是有默认的初始值的。 2.局部变量是没有默认的初始值的,必须要先初始化才能使用。 匿名对象:没有引用类型变量指向的对象就称作为匿名对象。 匿名对象要注意的细节: 1.一般不会给匿名对象的属性赋值,因为永远都没法获取到。 2.两个匿名对象永远都不可能是同一个对象。 匿名对象好处:简化书写。 匿名对象的应用场景: 1.如果调用一个对象的方法一次时,然后这个对象就不再使用,那么这时候可以使用匿名对象。 2.可以作为实参调用一个函数。 封装: 封装的步骤: 1.使用private修饰需要被封装的属性. 2.根据需要提供get或者set方法设置以及获取属性。 封装的好处: 1.提高了数据的安全性。 2.操作简单。 3.隐藏了实现。 注意:一般实体类的属性我们都会封装起来。 */
/*
java是面向对象的语言:"万物皆对象":任何事物都可以使用类进行描述。
需求:使用java类描述一个婴儿.
在现实生活中有两种婴儿,一种婴儿一出生就具备了名字(白户),还有一种婴儿就是出生之后才有名字的(黑户)。
构造函数:
构造函数的作用:给对应的对象进行初始化。
构造函数的定义的格式:
修饰符函数名(形式参数){
函数体...
}
构造函数要注意的细节:
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.普通函数是用于描述一类事物的公共行为的。
*/
//婴儿类
classBaby{
intid;//身份证
Stringname;//名字
//构造函数
publicBaby(inti,Stringn){
id=i;
name=n;
System.out.println("baby的属性初始化完毕!!");
}
//无参的构造函数
publicBaby(){
System.out.println("无参的构造函数被调用了..");
}
//哭
publicvoidcry(){
System.out.println(name+"哇哇哭...");
}
}
classDemo2
{
publicstaticvoidmain(String[]args)
{
//创建一个baby对象
Babyb1=newBaby(110,"狗娃");//婴儿诞生白户
System.out.println("编号:"+b1.id+"姓名:"+b1.name);
b1.cry();
b1.cry();
/*
//黑户
Babyb2=newBaby();
newBaby();
b2.id=112;
b2.name="狗剩";
System.out.println("编号:"+b2.id+"姓名:"+b2.name);
*/
}
}
相关文章推荐
- Jenkins自动构建时报java.io.IOException: No space left on device的解决方案
- Java线程之join()
- Java 理论与实践: 正确使用 Volatile 变量
- Java中synchronized关键字修饰方法同步的用法详解
- Java基础知识:java.util.Map集合
- Java Collection
- [Training Video - 2] [Java Introduction] [Install Java and Eclipse, Create Class]
- java Map
- Spring 包自动扫描
- 随机生成图片验证码
- 随机生成图片验证码
- java WEB开发浅谈
- XStream 初探,很给力
- Java多线程编程中synchronized关键字的基础用法讲解
- 可扩展tips-Spring MessageConverter
- Java发送邮件遇到的常见需求汇总
- java复制更改指定文件类型、后缀名
- Spring3MVC+MyBatis+ExtJs3整合开发系列之四:角色管理模块
- Spring3MVC+MyBatis+ExtJs3整合开发系列之三:人员管理模块
- Spring3MVC+MyBatis+ExtJs3整合开发系列之二:菜单模块演示