一、笔记:
封装:对属性进行操作
对属性进行赋值的方式。
属性:成员变量
对成员变量的赋值:
1.默认赋值
2.直接赋值
3.构造器进行赋值
4.创建对象后直接调用属性进行赋值
5.使用方法的形式给属性进行赋值
封装(Encapsulation):
•通常情况下,可以在测试类中给成员变量进行赋值,当给定的数值合法但不合理时,无论是编译还是运行阶段都不会报错或给出提示,此时与现实生活不符。
• 为了避免上述问题的发生,就需要对成员变量进行密封包装处理,该技术就叫封装,换句话说,封装就是一种保证成员变量值合理性的机制。
•封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
•好处:
–将变化隔离。
–便于使用。
–提高重用性。
–提高安全性。(健壮性)(提高数据的合理性)
•封装原则:
–将不需要对外提供的内容都隐藏起来。(将属性使用private进行修饰)
–把属性都隐藏,提供公共方法对其访问。(提供get、set方法)
使用权限修饰符,实现封装:
| 同一个类 | 同一个包 | 子类 | 所有类 |
private(私有) | T |
|
|
|
default(默认) | T | T |
|
|
protected(受保护) | T | T | T | T |
public(公共的) | T | T | T | T
|
封装要点:
类的属性的处理:
1.一般使用private.(除非本属性确定会让子类继承)
2.提供相应的get/set方法来访问相关属性,这些方法通常是public,从而提供对属性的操作。
一些只用于给本类的辅助方法可以用private
希望其它类调用的方法用public
static(静态)关键字:
•static关键字:
用于修饰成员(成员变量和成员函数)
被修饰后的成员具备以下特点:
随着类的加载而加载 可以使用类名.进行调用
优先于对象存在
被所有对象所共享
可以直接被类名调用
使用注意
静态方法只能访问静态成员
可以直接使用类名调用
静态方法中不可以写this,super关键字
主函数是静态的
能不用则用,尽量少用
匿名对象:
•匿名:没有名字
•匿名对象是对象的简化形式
•
•匿名对象两种使用情况
–当对对象方法仅进行一次调用的时
–匿名对象可以作为实际参数进行传递
–还可以做为返回值进行返回
对象和类的概念:
•面向对象编程(OOP)的本质:
--以类的方式组织代码,以对象的方式组织(封装)数据。
•面向对象思维:OOA(analyze) OOD(design)
•对象:是具体的事物
•类:是对对象的抽象(抽象 提取出象的部分)
类怎么设计的?
•先有具体的对象,然后抽象各个对象之间象的部分,归纳为类。
通过类再认识其它对象。(人的思想是默认具备抽象的功能)
对象和类的总结:
•对象和类的关系:特殊到一般,具体到抽象
•类:我们叫做class
•对象:我们叫做Object、instance(实例).以后我们说某个类的对象,某个类的实例,是一个意思。
创建对象=实例化对象
•类可以看成是一类对象的模板,对象可以看成该类的一个具体实例。
•类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态的属性和动态的行为。
•对象是java程序的核心。java中追求”万事万物皆对象”
•JDK提供了很多类供编程人员使用,编程人员也可以定义自己的类。
类的属性:
•属性 field,或者叫成员变量
•属性用于定义该类或者该类对象包含的数据或者说是静态属性
•属性的作用范围是整个类体
•属性定义的格式:
–修饰符 属性类型 属性名 = (默认值/初始值);
成员变量和局部变量的区别?
•成员变量:
–成员变量定义在类中,在整个类中都可以被访问。
–成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
–成员变量有默认初始化值。
•局部变量:
–局部变量只定义在局部范围内,如:函数内,语句内等。
–局部变量存在于栈内存中。
–作用的范围结束,变量空间会自动释放。
–局部变量没有默认初始化值。
类的方法:
•面向对象中,整个程序的基本单位是类
•属性代表静态的数据,方法代表动态的行为
•
•方法定义的格式:
修饰符 方法返回值类型 方法名(形参列表){
//n条执行语句;
return 返回值;
}
Java中参数传递的方式:值传递!
内存分析:
•栈:
–存放:局部变量,对象的引用
•堆:
–存放new出来的对象
•方法区:
–存放类的信息(代码)、常量池等。
•静态域:
–static修饰的东西
引用类型:
•Java中除了基本类型之外的变量类型都称之为引用类型。
•Java中的对象是通过引用对其操作的。
•
•基本数据类型
基本数据类型的值是它类型范围内的一个具体数据
•引用数据类型
引用数据类型的值是一个该类所对应的具体的对象
构造器:
•构造器又称为构造方法
•构造器用于构造该类的实例。创建对象
•格式如下:
•权限修饰符 类名(形参列表){
//n条语句
•}
•是一种特殊的方法:
①通过new关键字调用。
②构造器不需要返回值,连void也不要
③如果我们没有定义构造器,则系统会默认提供一个无参数的构造器。如果自己定义了构造器,会将系统的默认构造器替换掉!
④构造器的名字必须和类名一致!
作用:1、用来构造一个对象 2、对对象的属性进行初始化(给属性赋值)
2=在创建对象时,对属性进行赋值。
•构造器又称为构造方法,所以构造器也具有方法的一些特性
•在我们的方法中,有一个特性:overload(重载)
•重载:同一个类中可以有多个同名的方法,只要他们的参数不同即可。(参数个数或者参数类型)
•
•设计程序时,如果显性出一个或者多个带参的构造器,那么这时程序员应该习惯性的提供一个空参的构造器。
this关键字:
特点:this代表其所在函数所属对象的引用。
换言之:this代本类对象的引用。
什么时候使用this关键字呢?
当在函数内需要用到调用该函数的对象时,就用this。
二、老铁 做题吧
1.猜数字游戏:一个类A有一个成员变量v,有一个初值100。再定义一个类,为该类定义比较方法,对A类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。
package com.qfedu.zhuguangyi.opp;
public class A {
int v=100;
}
package com.qfedu.zhuguangyi.opp;
public class TestA {
public static void main(String[] args) {
biJiao(50);
}
public static void biJiao(int b){
A a = new A();
if(b>a.v){
System.out.println("大了");
}else if(b<a.v){
System.out.println("小了");
}else{
System.out.println("成功");
}
}
}
别说不行,你都还没做怎么会知道?
该坚强就别懦弱下去!!!