1.封装
什么是封装?
隐藏对象的属性和实现细节,仅对外提供公共的访问方式
怎么隐藏对象的属性?
只需要在对象的属性前面加上一个关键字,private
怎么对外提供公共的访问方式?
我们只需要在该类中,创建两个公共的方法,在这两个方法里调用本类中被private修饰的成员变量,然后我们在其他类中
创建该类的对象,通过对象调用这个两个公共的方法,即可间接的调用该类中被private修饰的成员变量
2.private关键字
什么是private关键字?
它是一个访问权限修饰符,它代表私有的意思,它可以修饰成员变量,成员方法和构造方法(以后要学)
private关键字的特点是什么?
被private关键字修饰的成员变量和成员方法只可以在本类中被访问,不可以在其他类中直接访问,即使两个类之间存在子父类继承关系,也不可以直接访问
注:private仅仅是封装的一种体现之一,函数和类也是封装的一种体现
加上private关键字之后的标准代码怎么写?
class Person {
//String name;
//int age;
private String name;
private int age;
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
}
3.构造方法
什么是构造方法?
方法的名字跟类名一摸一样的,跟普通方法的格式不一样的特殊的方法
构造方法的格式是什么样子的?
修饰符 类名() { return; }
构造方法的特点是什么?
构造方法的名字跟类名是完全一样
构造方法没有返回值类型
构造方法没有返回值
构造方法有隐藏的return;
构造方法的作用是什么?
创建对象
给对象的属性(成员变量)进行初始化
我们在使用构造方法时需要注意哪些问题?
当我们没有手动写出构造方法的时候,系统会给我们默认带一个无参构造方法
当我们自己写了构造方法的时候,系统给我们默认自带的无参构造就消失了,这里建议我们任何时候都要手动写上无参构造
由于构造方法也是函数,它就要满足函数的重载条件,既当一个类中出现多个构造方法时,它们是以重载的形式存在
public Person() {}
public Person(String name) {}
public Person(int age) {}
public Person(String name, int age) {}
4.this关键字
什么是this关键字?
它代表一个对象的引用,说白了,谁调用this所在的方法,this就代表谁,this的值是堆内存中对象的地址值
this关键字的作用是什么?
解决了局部变量隐藏成员变量的问题
可以调用本类中其他的构造方法(以后学习)
加上this关键字之后的标准代码怎么写?
class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
}
5.代码块
什么是代码块?
由一对大花括号{}括起来的就是代码块
代码块分为哪几种?
局部代码块,构造代码块,静态代码块(以后学习)
什么是局部代码块?
定义在方法内的代码块就是局部代码块
什么是构造代码块?
定义在类内,方法外的代码块就是构造代码块
局部代码块和构造代码块的区别?
局部代码块:能尽可能早的让局部变量从内存中消失,从而提高了效率
构造代码块:将一个类中所有构造方法里共有的内容提取出来,放入到构造代码块中
6.Person p = new Person();这一句话在内存中到底做了哪些事情?
成员变量默认初始化 --> 成员变量显式初始化 --> 构造代码块 --> 构造方法
7.static关键字
什么static关键字?
它是一个修饰符,它代表静态的意思,它可以修饰成员变量,成员方法,不可以修饰构造方法
static关键字的特点是什么?
被static关键字修饰的成员变量和成员方法被该类的所有对象所共享
随着类的加载而加载
优先于对象存在于内存中
可以通过类名直接调用
Person.eat();
Person.name;
我们在使用static关键字的时候需要注意哪些问题?
静态方法里不能有this关键字
静态方法内只能访问静态的成员变量和成员方法,而非静态的方法中可以访问非静态的成员变量和成员方法,也可以访问静态的成员变量和静态方法
8.Math类
public static double abs(double a)
public static double ceil(double a)
public static double floor(double a)
public static long round(double a)
public static double random()
public static long max(long a,long b)
public static float min(float a,float b)
求1-100之间的随机整数
(int)(Math.random()*100) + 1 |
|