面向对象,类,对象,GC垃圾回收器,private关键字

一、面向对象

是一种编程思想

1.三大特征

封装、继承、多态

 

二、类 class

类是一类事物的抽象

属性 --事物的特征

方法 --事物的行为

 

三、对象

是一类事物中具体的个体

对象类型 对象名 = new 对象类型();

获取属性:对象名.属性

给属性赋值:对象名.属性 =

对象名.方法()

 

一个.java文件中可以包含多个类,但是只能有一个类被public修饰,
 *     被public修饰的类的名字就是.java的文件名
 * 
 * .class文件从硬盘中加载进入内存中,
 * JVM虚拟机自动编译并调用main()方法到栈内存中。

单个对象内存图

 
1. 在栈内存中创建一个变量 p1 ,持有对象的地址值
2. 在堆内存中创建 Phone 对象,并且开辟变量空间,完成初始化
3. 给堆内存中的元素分配一个唯一的标志,地址值,交给 p1 保存
4. p1.brand = “ 华为 ”; p1.price = 999.9; 就去堆内存中找到唯一的地址值,找到 Phone 对象,并对其属性进行修改赋值

 

多个对象内存图

四、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();// 对外界 间接提供睡觉的功能
	}
	

	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值