面向对象
1.对于面向对象的理解
面向对象是相对面向过程而言
面向对象和面向过程都是一种思想
面向过程
强调的是功能行为
面向对象
将功能封装进对象,强调具备了功能的对象。
面向对象是基于面向过程的。
2.面向对象的特点
是一种符合人们思考习惯的思想
可以将复杂的事情简单化
将程序员从执行者转换成了指挥者
完成需求时:
先要去找具有所需的功能的对象来用。
如果该对象不存在,那么创建一个具有所需功能的对象。
这样简化开发并提高复用。
(1)封装(encapsulation)
(2)继承(inheritance)
(3)多态(polymorphism)
3.面向对象分析(Object-Oriented Analysis—OOA):
确定对象和类(名词);
确定数据结构;
4.面向对象设计(Object-Oriented Design—OOD):
进一步确定对象,及对象与对象之间的关系。
5.面向对象编程(Object Oriented Programming—OOP)
定义类、创建对象,使用对象,指挥对象做事情。
我的想法
我对面向对象的理解主要是他是一种对于生活中实物之间关系的体现,而面向过程的变成只注重关系而往往忽视了实物本身,
而面向对象思想很好的体现了每个实体之间的关系
private关键字:
是一个权限修饰符。
用于修饰成员(成员变量和成员函数)
被私有化的成员只在本类中有效。
public关键字:
是一个权限修饰符。
用于修饰成员(成员变量和成员函数)
被公有化的成员在所有类中都可以访问
this关键字
1.一般当成员函数访问成员变量时会自动在成员变量前加this.xxx
2.有些时候需要显示的使用this
1).当局部变量覆盖成员变量时,这时默认访问的是"局部变量",成员变量被隐藏,
可以显示的使用this.成员变量来访问成员变量;
数据封装\
将属性全部私有,可以有选择的对外提供公有的get和set方法
也叫标准的JavaBean
1.属性名全部私有。首字母小写,从第二个单词开始首字母大写;
2.有选择的对外提供公有的的setXXX()和getXXX()方法。set和get全部小写,第二个
单词开始,首字母大写,而且set后边的名称一定要和属性名相同;
我的想法
数据的封装用到了private关键字和this关键字,也让我更好的理解了public关键字,而数据封装的意义在于保护源码,只给调用者提供一些文档注释,体现了知识产权的重要性
初始化数据成员——构造函数
特点:
1.函数名与类名相同
2.不允许定义返回值类型,甚至是void;
3.没有具体的返回值。
作用:
给对象进行初始化。
注意:
1.默认构造函数的特点。
2.多个构造函数是以重载的形式存在的。
构造函数中使用this关键字的特点:this代表其所在函数所属对象的引用。
我的想法
构造函数基本上是每个类必须有的,它对于类的实例化的多种参数形态有重要的意义
static关键字:
用于修饰成员(成员变量和成员函数)
静态代码块
被修饰后的成员具备以下特点:
随着类的加载而加载
优先于对象存在
被所有对象所共享
可以直接被类名调用
使用注意
静态方法只能访问静态成员
静态方法中不可以写this,super关键字
主函数是静态的
main()方法详解:
程序的入口方法:
public static void main(String[] args){
}
1.public:公有的;
2.static:静态的;
3.void:无返回值;
4.main:方法名;
5.String[] args:形参,字符串数组;
制作帮助文档
在JDK的bin目录下有个javadoc.exe,它用来生成hmtl格式的帮助文档;
对于类及方法等的说明需要使用“文档注释”
Java源文件中的文档注释:/** 开始,*/结束;
常用的HTML标签关键字:
@author : 作者;
@exception:可能抛出的异常;
@param:方法的参数
@return:方法的返回值;
@version:代码的版本号
生成随机数
java类库中提供了一个Math类,里面包含一些执行基本数学运算的方法(见帮助文档)
random()方法用于生成随机数;
该方法生成的随机数大于等于0.0,小于1.0
生成1——100之间的一个随机数:
(int)(Math.random() * 100) + 1;
我的代码
class Demo
{
/*
1.生成一个随机数,将随机数存进一个变量
2.创建一个数组
3.
4.将变量值与数组中的每一个数进行比较
5.有相同则舍去,不相同则加入数组
*/
public static void main(String[] args)
{
/*
for (int i = 0 ;i < 20 ;i++ ){
System.out.println("随机数" + Math.random());
}
for (int i = 0 ;i < 20 ;i++ ){
System.out.println("生成一个随机数:" + (int)((Math.random()*100)+1));
}
*/
int max = 100;
int[] arr = new int[max];
int num1 =0;
int u = 0;
loop:
while (u < max ){
num1 = (int)((Math.random()*100)+1);
for (int i = 0;i < arr.length;i++){
if ( num1==arr[i]){
continue loop;
}
}
arr[u]= num1;
u++;
}
//System.out.println("生成一个不重复的随机数:"+arr[0]);
for (int s = 0;s < arr.length;s++){
System.out.println("生成一个不重复的随机数:"+arr[s]);
}
/*int q = 20;
int[] arr =new int[q];
int num = 0;
arr[0] = (int)((Math.random()*100)+1);
for (int i = 0;i < (q-1); ){
num = (int)((Math.random()*100)+1);//产生一个随机数
boolean b = false;
for (int s =0;s < arr.length;s++ ){//遍历看是否重复
if (arr[s] != num){//如果num不等于已经存储的数组中的任何数
b = true;
}else{
return;
}
if (b){
arr[i+1] = num;
i++;
}
}
}
for (int i = 0;i < arr.length ;i++ ){
System.out.println("生成一个随机数:"+arr[i]);
}
*/
}
}