java类、对象、封装

1:面向对象和面向过程的比较
(1)面向过程
操作 动词 程序 = 算法+数据结构
(2)面向对象
对象 名词 程序 = 对象+消息
2: 类和对象
(1)概述
A:现实世界的事物
属性(数据)(静态) 事物的基本描述
行为(方法)(动态) 事物的功能
B:Java语言中最基本的单位是类。所以,我们要用类来体现事物

	C:类	同一种事物的集合,它是一个抽象的概念。
		成员变量	事物属性
		成员方法	事物行为
	D: 对象:它是类的一个具体的实例。
	  举例:
		学生:类
		班长:对象
(2) 类的定义及使用
	A:类的定义
		成员变量	定义格式和以前一样,就是位置不同,在类中,方法外。
		成员方法	定义格式和以前一样,就是去掉了static。
		格式 
		 class 类名 {
			int a;
			public void show() {}
		}
	B:使用类的内容
		a:创建对象
			类名  对象名 = new + 构造方法();
		b:如何访问成员变量和成员方法呢?
			对象名.成员变量;
			对象名.成员方法();	
(3)案例:
	A:学生类的定义和使用
	B:手机类的定义和使用
(4)内存图
	A:一个对象的内存图
	B:二个对象的内存图
	C:三个对象的内存图
(5)面向对象的特征
	a:封装
	b:继承
	c:多态

3:成员变量和局部变量的区别
(1)在类中的位置不同
成员变量:成员位置
局部变量:方法内或者方法声明上
(2)在内存中的位置不同
成员变量:堆
局部变量:栈
(3)生命周期不同
成员变量:随着对象产生而开始,随着对象的消亡而结束
局部变量:随着方法的入栈而开始,随着方法的出栈而结束
(4)初始化值不同
成员变量:默认初始值
局部变量:不赋值不能使用
4:匿名对象
(1)没有名字的对象
new Student()
(2)应用场景
A:调用方法,仅仅只调用一次的时候。
new Student().study();
b:可以作为实际参数传递。
new Teacher().teach(new Student());

5:封装
(1)隐藏实现细节,提供公共的访问方式
(2)好处:
A:隐藏实现细节,提供公共的访问方式
B:提高代码的复用性
C:提高代码的安全性
(3)设计原则
把不想让外界知道的实现细节给隐藏起来,提供公共的访问方式
(4)private是封装的一种体现。
包,类,方法,访问修饰符它们都是封装的一种技术

6:private关键字
(1)私有的意思,可以修饰成员
(2)特点:被private修饰的成员变量和成员方法只能在本类中访问,其他类不能访问。
(3)private的应用
对于一个pojo来说:
将成员变量用private修饰
提供相应的 setter & getter。
7:this关键字
(1)代表当前类的引用对象
记住:哪个对象调用方法,该方法内部的this就代表那个对象
(2)this的应用场景:
this 解决了局部变量隐藏成员变量的问题

8:构造方法
(1)作用:用于对对象的数据进行初始化
(2)格式:
A:方法名和类名一样
B:没有返回值类型,连void也没有
举例:
Student() {}
(3)构造方法的注意事项
A:如果你没有提供一个构造方法,系统会提供一个默认的无参构造方法
B:如果你提供了构造方法,系统将不会提供一个无参的构造方法
推荐:自己写一个无参的构造方法
C: 构造方法可以重载
D:构造方法不能递归调用
(4)给成员变量赋值的方式
A:无参构造方法 + setXxx()
B:带参构造方法
(5)标准pojo
class Student {
private String name;
private int age;

		public Student(){}
		
		public Student(String name,int age) {
			this.name = name;
			this.age = age;
		}
		
		public String getName() {
			return name;
		}
		
		public void setName(String name) {
			this.name = name;
		}
		
		public int getAge() {
			return age;
		}
		
		public void setAge(int age) {
			this.age = age;
		}
	}

9: 对象的初始化过程
代码:Student s = new Student();做了哪些事情?
(1)加载Student.class到内存
(2)在栈上开辟为s变量开辟内存空间
(3)在堆上申请为对象申请内存空间
(4)对对象的成变量进行默认初始化
(5)对成员变量进行显示初始化
(6)执行构造方法
(7)将对象的地址赋值给s变量

10:static关键字
(1)静态的意思。可以修饰成员。表示这个成员是类所有。
(2)静态的特点:
A: 随着类的加载而加载
B: 优先于对象而存在
C: 被类的所有对象共享
D: 通过类名直接调用,也可以通过对象名调用,推荐使用类名调用
(3)静态的内存图
静态的内容在方法区的静态区
(4)静态的注意事项;
A: 在静态方法中没有this对象
B: 静态方法只能访问静态的内容
C: 成员方法可以访问静态的内容,也可以访问非静态的内容
(5)静态变量和成员变量的区别
A:所属不同
静态变量:类
成员变量:对象
B:内存位置不同
静态变量:方法区的静态区
成员变量:堆
C:生命周期不同
静态变量:随着类的加载而开始,类的消失而结束
成员变量:随着对象的创建而开始,随着对象的消亡而结束
D:调用不同
静态变量:同过类名直接调用(推荐使用),通过对象调用(不推荐)。
成员变量:只能通过对象调用
(6)main方法是静态的
public: 因为main()是被JVM调用, 所以访问权限得够大
static: main()是程序的入口, 被调用的时候还没对象存在
void: 将返回值返回给JVM是没有意义的
main: 约定俗成的名字
String[] args: 早期用来接收键盘录入的数据
java Demo hello world java

11:如何制作帮助文档
(1)写一个类
(2)加入文档注释
(3)通过javadoc工具生成即可
javadoc -d 目录 -version -author -encoding gbk MyMath.java

12:如何查看文档
1) 包
2) 类的继承结构
3)概述
4) 版本
5) 构造方法
6) 查看的方法
13:通过JDK提供的API学习了Math类
(1) 产生随机数
public static double random();
[0, 1.0)
(2) 如何产生一个1-100之间的随机数
int number = (int)(Math.random()*100)+1;
(3) 猜数字小游戏
1. 如何循环录入数据
2. 二分查找

14:代码块
(1)用{}括起来的代码。
(2)分类:
A: 局部代码块
局部位置
限定变量的生命周期,及早释放内存空间,提高利用率
B: 构造代码块
成员位置
将构造方法的最前面的相同内容抽取出来,放在构造代码块中,用于给对象进行初始化
每次创建对象都会执行
C: 静态代码块
成员位置
给类进行初始化
随着类的加载而执行的,只执行一次
D: 同步代码块(后面讲)
(3)静态代码块,构造代码块,构造方法的顺序问题?
静态代码块 > 构造代码块 > 构造方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值