封装
封装 ,解决是数据安全性问题
继承,代码重用
多态 解决扩展问题
1.1.封装的实现
- 把成员变量私有化,使用private修饰
- 提供共有的get/set方法 ,使用public 修饰
public class Car {
private String color;
private String brand;
//私有的
private double price;
public Car() {
}
public Car(String color, String brand, double price) {
this.color = color;
this.brand = brand;
this.price = price;
}
public double getPrice() {
return this.price;
}
public void setPrice(double price) {
if (price < 10) {
this.price = 10;
} else {
this.price = price;
}
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public void run() {
System.out.println("在跑");
}
}
1.2. this关键字
- 指代的是当前对象
- 本质上就是一个变量,它指向当前对象
使用的场景:
1,当方法的形参参数名和成员变量名一样的时候用到this
2,当成员变量和局部变量重名的时候,使用this访问成员变量
3,在构造方法中调用另一个构造方法,this调用放到第一行
public void run() {
//局部变量
String color;
// this.color是成员变量
System.out.println(this.color);
System.out.println("在跑");
}
public Car(String color, String brand, double price) {
//调用另一个构造方法
this(color, brand);
this.price = price;
}
public Car(String color, String brand) {
this.color = color;
this.brand = brand;
}
1.3. static关键字
- static表示静态的,可以修饰方法和成员变量;静态的只有一份
- 如果static修饰成员变量,表示该成员变量只有一份,该类所有对象共享;访问的时候可以直接使用类名.属性名
- static修饰方法的时候表示此方法是静态方法;静态方法里面不能出现this关键字;调用的时候直接使用 类名.方法名();静态方法中不能访问非静态成员(成员变量/方法)
- static修饰的代码块是静态代码块,整个类加载过程中 只执行一次而且优先于构造执行
//修饰成员变量
private static String color;
private String brand;
//私有的
private static double price;
修饰方法
/**
* 静态方法中不能访问非静态成员(成员变量/方法)
*/
public static void run() {
//局部变量
String color;
// this.color是成员变量
System.out.println(price);
System.out.println("在跑");
method();
}
public static void method() {
}
修饰代码块,只会执行一次
/**
* 这是静态代码块,系统资源初始化
*/
static {
System.out.println("静态代码块执行了");
}
统计该类目前有多少个对象
public class Student {
private String name;
private int age;
private static int num; // 0
public Student() {
num++;
System.out.println("学生对象有 " + num);
}
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;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
1.4. package和import关键字
- package是包,用来解决类名冲突问题的
- 一般公司域名倒写
- 同一个包下面,类名不能一样;package只能出现在首行
- import的使用情况:当前package下面没有此类的时候一定要加import 导入进来
- import 是导入的意思 后面是全路径(包名+类名)
- java.lang下面的class会自动导入
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/192965.html