1、类与对象的关系:
类相当于抽象的概念。
对象是类的具体表现。
类: 是一组成员变量和成员方法的集合,可以把类看作一个抽象的概念。
对象:是该类的具体的表现,具体到一个个体。
2、现实事物:
属性:用于描述事物的信息。 例如:人的身高,体重等。
行为:用来描述事物能够做什么的。 例如:人可以学习,吃饭等。
类:
成员变量:就是事物的属性。
成员方法:就是事物的行为。
定义一个类,其实就是定义这个类中成员变量和成员方法。
3、如何定义一个成员变量?
(1)、定义的位置:在类中,方法外
(2)、定义的格式:
数据类型 变量名;
public String name;
4、如何定义一个成员方法?
(1)、定义的位置:在类中
(2)、定义的格式:
修饰符 返回值类型 方法名(参数列表){
方法体;
}
public void eat(){ System.out.println("饿了吃饭。"); }
5、定义一个类:
(1)、先创建成员变量
(2)、再创建成员方法
public class Student{ //创建成员变量 String name; int age; //创建成员方法 public void sleep(){ System.out.println("困了就睡觉。"); } }
如何创建对象:
在main方法中调用。
格式:类名 对象名 = new 类名();
Student student = new Student();
创建好对象后,通过对象名访问成员变量:
格式:对象名.非私有的成员变量名
student.name = "小米"; //给成员变量赋值 System.out.println(student.name); //输出
创建好对象后,通过对象访问成员方法:
格式:对象名.非私有的成员方法
student.sleep();
6、成员变量与局部变量的区别:
(1) 、在类中定义的位置不同
成员变量:类中,方法外
局部变量:定义在方法内部
(2) 、在内存中的位置不同
成员变量:在堆内存中
局部变量:在栈内存中
(3) 、初始化值不同
成员变量:系统会给予默认值
局部变量:没有系统给的默认值,必须在定义的时候赋值,亦或者在方法中使用之前赋值,然后才能使用。
(4) 、生命周期不同
成员变量的生命周期:随着对象的创建而创建,随着对象的消失而消失
局部变量的生命周期:随着方法的调用而创建,随着方法的调用完毕而消失
注意事项:
(1)、局部变量的名字可以和成员变量的名字一样,在方法中使用的时候,采用就近原则
方法中使用的变量,会先在方法内部查找,如果方法内部没有,去成员变量中查找。
(2)、方法与方法之间的局部变量,不能互相调用。
public void show(){ int a = 20; System.out.println(a); } public void show1(){ //System.out.println(a); //报错,因为show1方法无法调用到show方法中的变量a }
7、形式参数的问题: (形参就是定义方法时后面跟的参数)
(1)、当形式参数是基本数据类型的时候, 将来调用方法的时候传入的是常量值, 或者是该类型的变量。
(2)、当形式参数是引用数据类型的时候, 将来调用方法的时候传入的是该类对象的地址值。
(3)、当形式参数是基本数据类型的时候, 在方法中对变量做修改, 不会影响到外部实际的栈内存中的值。
(4)、当形式参数是引用数据类型的时候, 在方法中对变量做修改, 会影响到外部实际的堆内存中的值。
8、匿名对象:
没有名字的对象,是当new完对象之后直接使用,没有用变量名接收的对象。
匿名对象的使用场景:
(1) 、调用方法时,仅仅调用一次的时候,可以使用匿名对象。
注意,当调用多次的时候,不适合。每次new都是一个新的匿名对象,会频繁的在堆内存中开辟空间。
当匿名对象使用完毕之后,无法再使用第二次,就变成了一个垃圾(当栈中没有变量引用它的时候,判定是一个垃圾),等待被垃圾回收器回收。
(2) 、当方法的参数类型是一个类的时候,可以使用匿名对象调用方法。
在main方法中创建对象:
PhoneDemo pd = new PhoneDemo(); Phone phone = new Phone(); //调用的时候,实际传的是对象phone的地址值 pd.function(phone); //调用方式1 new PhoneDemo().function(new Phone()); //调用方式2 //调用方式1和调用方式2输出结果一致,而第2种就是匿名对象的方式调用。
9、面向对象的三大特质之一: 封装
隐藏类的属性和相关描述信息,对外仅提供公共的get和set方法访问方式。
(1)、封装的好处:
隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。
(2)、封装的原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
10、private关键字:
(1)、私有的。
(2)、它可以修饰成员变量和成员方法。
private String name; private void password(){ ... }
(3)、被private修饰的成员只能在本类中进行访问,其他类中使用不了。
11、this关键字:
this代表所在类的对象引用。
方法被哪个对象调用,this就代表那个对象
一般用在set方法中:
private String name; public void setName(String name){ this.name = name; //这里this.name就是指成员变量name }
12、标准类的写法:
(1)、成员变量:被private修饰
(2)、成员方法:getXxx()和setXxx(),show()
(3)、使用this关键字。
public class Phone { private String brand; private int price; private String color; public void setBrand(String brand) { this.brand = brand; } public void setPrice(int price) { this.price = price; } public void setColor(String color) { this.color = color; } public String getBrand() { return brand; //其实这里隐藏了一个this,但是我们也可以不写,因为就近原则取的就是对象的成员变量 } public int getPrice() { return price; } public String getColor() { return color; } public void show() { System.out.println("手机的品牌是: " + brand + " ,手机的价格是: " + price + " ,手机的颜色是: " + color); } }
今天已经是我学习java的第8天了,我感觉每天的我都很充实,我很喜欢这种感觉,我会继续加油。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)