一、面向对象
是一种编程思想
1.三大特征
封装、继承、多态
二、类 class
类是一类事物的抽象
属性 --事物的特征
方法 --事物的行为
三、对象
是一类事物中具体的个体
对象类型 对象名 = new 对象类型();
获取属性:对象名.属性
给属性赋值:对象名.属性 = 值
对象名.方法()
一个.java文件中可以包含多个类,但是只能有一个类被public修饰,
* 被public修饰的类的名字就是.java的文件名
*
* .class文件从硬盘中加载进入内存中,
* JVM虚拟机自动编译并调用main()方法到栈内存中。
四、GC 垃圾回收器:
如果堆内存中的对象没有任何的变量指向该对象,那么程序将无法再访问该对象,
GC会定时自动回收该对象,并且释放该对象所占的内存区。
当对象没有任何引用指向时,java的垃圾回收器GC会定时自动回收该对象,
并且释放该对象所占的内存区,我们也可以手动调用 System.gc ( ) ;
提醒GC来回收,但是是否来回收还是看gc自己的安排。
提醒GC回收垃圾:
System.gc ( ) ;
package test.day05;
// 创建类和对象
/* 一个.java文件中可以包含多个类,但是只能有一个类被public修饰,
* 被public修饰的类的名字就是.java的文件名
*
* .class文件从硬盘中加载进入内存中,
* JVM虚拟机自动编译并调用main()方法到栈内存中。
*/
public class Test1_Class {
public static void main(String[] args) {
// 4、通过new关键字创建对象
// p1是引用类型的变量,保存着内存分配的地址值
Phone p1 = new Phone();
// 5. 调用方法、功能
p1.call();
p1.message();
p1.music();
// 7. 给属性赋值
p1.brand = "小米";
p1.color = "白色";
p1.price = 999.9;
p1.size = 5.5;
// 6. 获取元素值
System.out.println(p1.brand);// null - 小米
System.out.println(p1.color);// null - 白色
System.out.println(p1.price);// 0.0 - 999.9
System.out.println(p1.size); // 0.0 - 5.5
Phone p2 = new Phone();
p2.brand = "华为";
p2.color = "红色";
System.out.println(p2.brand);
System.out.println(p2.color);
/*
* 当对象没有任何引用指向时,那么程序将无法访问该对象,
* java的垃圾回收器GC会定时自动回收该对象,
* 并且释放该对象所占的内存区,
* 我们也可以手动调用 System.gc ( ) ;
* 提醒GC来回收,但是是否来回收还是看gc自己的安排。
System.gc ( ) ;
*/
p2 = null;
System.gc();
System.out.println(p2);
}
}
// 1. 用来描述生活中的手机这一类事物 特征+行为
// 类是一类事物的抽象
class Phone{
// 2.特征 -- 成员变量/属性
String color;// 颜色
String brand;// 品牌
double size;// 尺寸
double price;// 价格
// 3.行为 -- 成员方法
public void call() {// 打电话
System.out.println("calling...");
}
public void message() {// 发短信
System.out.println("sending...");
}
public void music() {// 听音乐
System.out.println("listening...");
}
}
五、private 私有的
修饰属性、方法,只能在本类中访问
提供公开的访问方式来访问私有化属性或方法
属性私有化,方法公开化
// 访问权限修饰符 public-公开的 private-私有的
// private 可以修饰属性--成员变量 也可以修饰方法--成员方法
// 只能在本类中访问
// 提供公开的访问方式来访问私有化属性或方法
// 属性私有化,方法公开化#
// 当方法被私有后,只能在本类中访问
// 快捷键生成 getXxx setXxx 方法
// 右键 -> source -> Generate Getters and Setters
package test.day05;
// 访问权限修饰符 public-公开的 private-私有的
// private 可以修饰属性--成员变量 也可以修饰方法--成员方法
// 只能在本类中访问
public class Test3_Prevate {
public static void main(String[] args) {
Student s = new Student();
// s.name = "张三"; // name 被私有化了,无法访问
// System.out.println(s.name);// name 被私有化了,无法访问
System.out.println(s.getName());//调用get方法获取值
s.setName("李四");// 调用set方法设置值
System.out.println(s.getName());
s.setAge(16);
System.out.println(s.getAge());
s.setSex('男');
System.out.println(s.getSex());
s.study();
}
}
class Student{
// 使用 private 修饰的属性,只能在当前类使用
private String name;
// 提供公开的方法,用来给外界获取值,就是 getXxx();
public String getName() {
return name;
}
// 提供setXxxx();用来给外界设置值
public void setName(String n) {
name = n;
}
private int age;
public int getAge() {
return age;
}
public void setAge(int a) {
age = a;
}
// 快捷键生成 getXxx setXxx 方法
// 右键 -> source -> Generate Getters and Setters
// 提供公开的访问方式来访问私有化属性或方法
// 属性私有化,方法公开化#
private char sex;
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
// 当方法被私有后,只能在本类中访问
private void sleep() {
System.out.println("睡觉");
}
public void study() {
System.out.println("学习");
sleep();// 对外界 间接提供睡觉的功能
}
}