面向对象的学习:
构造器:
1、构造器的作用:
初始化类的对象,并返回对象的地址。
2、构造器有以下两种:
无参数构造器:初始化对象时,成员变量的数据均采用默认值。
public ClassName() {
}
有参数构造器:在初始化对象的时候,同时可以接收参数为对象进行赋值。
public ClassName(int id, String name, double price, int buyNumber) {
this.id = id;
this.name = name;
this.price = price;
this.buyNumber = buyNumber;
}
3、注意事项:
任何类定义好,都会有一个默认的无参数构造器,不需要写。
然如果定义了有参数构造器,还想用无参数构造器,那么就一定需要写一个无参数构造器。
this 关键字:
this关键字出现在构造器和成员方法中,代表当前对象的地址。
而this关键字可以用于指定访问当前对象的成员。
未使用this关键字:
使用this关键字:
面向对象有:封装、继承、多态三大特征。
面向对象三大特征之一:封装
封装原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
列如:人关门,是门自己关了,而不是人去关的,只是门借助了人的作用力。
封装思想就是告诉我们:有什么事就去找对象,调用方法就好了。
JavaBean:
也可以称为实体类,其对象可以用于在程序中封装数据。
标准JavaBean须满足以下书写要求:
一般情况对成员变量使用private(私有、隐藏)关键字进行修饰(所修饰的成员只能在当前类中访问)
提供成员变量对应的set---() / get---()方法。
必须提供一个无参构造器;有参构造器可以不写。
进行封装的商品类:
package example4;
/**
对商品进行封装
*/
public class Goods {
private String name;
private double price;
private int Nub;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getNub() {
return Nub;
}
public void setNub(int nub) {
if (nub <= 99 && nub >= 0){
Nub = nub;
}else {
System.out.println("输入数量有误!");
}
}
}
对其中的"数量(Nub)"变量进行测试:
成员变量和局部变量的区别:
区别 | 成员变量 | 局部变量 |
类中位置不同 | 类中,方法外 | 常见于方法中 |
初始化值不同 | 有默认值,无需初始化 | 没有默认值,使用前需赋值 |
内存位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象的创建而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的运行结束而消失 |
作用域 | 所在的大括号中 |
对面向对象大致理解后的一个小案例:
创建一个电影展示界面,需要有一个电影类,在创建电影对象,从而打印这些的对象的数据。以下是实现的代码:
电影类,以及对数据的封装:
package example5;
public class Movie {
private String name;
private double score;
private String director;
public Movie() {
}
public Movie(String name, double score, String director) {
this.name = name;
this.score = score;
this.director = director;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
}
测试类:
package example5;
public class Test {
public static void main(String[] args) {
Movie[] movies = new Movie[3];
// 创建3个电影对象并存入数组
movies[0] = new Movie("让子弹飞",9.9,"姜文");
movies[1] = new Movie("扬名立万",9.6,"刘循子墨");
movies[2] = new Movie("神奇动物:邓布利多之迷",9.6,"大卫-叶茨");
// 进行遍历
for (int i = 0; i < movies.length; i++) {
Movie m = movies[i];
System.out.println("电源名称:"+m.getName());
System.out.println("电源评分:"+m.getScore());
System.out.println("导演:"+m.getDirector());
System.out.println("-----------------------");
}
}
}
运行结果:
面向对象的基础学习就完成了!
感谢“黑马程序员”提供的网络学习资源!