java笔记__面向对象03__封装、关键字static

封装和关键字static

面向对象的三大特性:封装、继承、多态。(第四个:抽象)

​ 1、面向对象和面向过程的编程思想和编程方式

​ 2、了解了生活中的类和对象

​ 3、程序中如何从生活中抽象出类和对象

​ 4、Java中类和对象的使用

​ 5、方法:面向过程的核心

​ 5.1、方法的分类 ( 有4种)

​ 5.2、方法的使用

​ 5.3、构造方法

​ 5.4、this

​ 5.5、方法的重载

​ 5.6、成员变量和局部变量的区别

一、理解封装的作用
1.可以有效解决不合理赋值的问题。

​ 例如:玩游戏领宝宝,里面有亲密值一项,但是这个亲密值最大是100 ,但你输入大于100 或者是负数都能够成立,那这就是系统的Bug了。出现了不合理赋值的情况。

​ 2.可以降低程序之间的耦合性。(牵连小)

(个人理解:其实就是在一后敲代码的时候出现一个Bug的时候,修改Bug时不用牵连到全部/大部分的代码的修改。)

​ 3.可以提升代码的复用性。

​ 4.降低了大型系统的风险。

二、掌握封装的使用**

​ 1.降属性私有化(添加private修饰符)

	/* 名字 public 公共的*/
	public String name;
	/* 健康值 private 私有的*/
	private int health;

​ 2.给属性提供对应的公共的(public)getter/setter方法

	//  Alt+Shift  +S  ->  r   +  Alt+A全选  -> Alt+r确认生成
    public void setHealth(int health) {
          this. health =  health;public int getHealth() {
		return this. health;
	}
3.根据需求在对应方法中添加逻辑控制语句
    public void setHealth(int health) {
          // 添加逻辑控制语句
          this. health =  health;public int getHealth() {
		return this. health;
	}

合理的Java Bean 规范(扩展)

​ 1.属性私有化

​ 2.提供公共的getter和setter

3.提供无参构造

​ 4.实现序列化接口 serializable

/**
 * Java Bean规范
 */
public class Student {
	
	private String name;
	private int age;
	private char gender;
	
	// Alt+Shift  +S  ->  r   +  Alt+A全选  -> Alt+r确认生成
	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 char getGender() {
		return gender;
	}
	public void stu(char gender) {
		this.gender = gender;
	}
	/* 无参构架方法,在调用getter和setter也一定要调用出这个,
	后续会使用到*/
	public stu() {
		super();
	}
	

三、会使用Java的包来组织类

package

公司域名的倒序,包名全部是小写。

为什么使用包:

因为在同一个文件夹下,是无法存放多个同名文件内容。

​ 因为在同一个文件夹下,如果所有文件都放在一起,无法有效的进行区分和查找。

​ 可以根据包来定义访问权限。

​ 模仿了windows等系统的树形结构目录。

如何使用包:

​ 在定义好包后,如果在包下定义类,类中一定要在有效代码的第一行添加packa包声明。

如果在不同包中使用某个类:

那么一定要在使用类中声明包的导入语。import要引入的类地址;例如:使用Scanner、Arrays

如果不这样做,JVM无法确认该类型的地址,也无法区分多个同名类型。

​ import导入包声明,需要放在package声明下,类声明上的位置,它们之间的位置顺序固定。

java.lang包下的内容不需要手动导入!例如:System、String

例如:

package  can.kgc. demo1;
// 导入时  可以使用精细导入(全类名 / 全限定名 / 全/类路径) 也可以使用批量通配导入
	inport  java .util.Scanner;
	public  class  Test{
}

包package

可以用于在一个项目中出现多个重名的类文件。

可以用于在一个项目中更清晰的对类文件进行区分。

可以用来做访问权限控制。

如果在包下定义类,那么此类中应该进行包声明。

如果两个类在同一个包中,可以直接使用。

如果两个类在不同包中,必须要先导包才能使用。(java.lang包下的类无需导入)

原因:因为不同包中可能有重名的文件,如果不指定类路径/全类名(cn.kgc.Test),编译器无法区分。

import 要导入的类的全类名/全限定名/类路径。

注意:如果在一个类中使用到了两个不同包的同名类,那么必然有一个是需要以全类名形式使用的。

cn.kgc.demo1.Test1  test1 = new cn.kgc.demo1.Test1();

包的命名规范:

公司域名的倒序,包名全部小写。

​ 例如:在腾讯(www.tencent.com)的通讯部 做微信开发

com.tencent.部门名称.weixin.*****(不同公司的包命名方式会有出入)
4、理解和掌握使用访问修饰符

public(公共的)在整个项目中都能用

private(私有的)只能在同一个类中使用

默认/包级访问修饰符(default/friendly)什么也不加就是默认访问修饰符 , 只能在同一个包中使用

protected受保护的,和继承中的子类和父类有关。

它们可以用来修饰类、方法、属性…

public class 类名{
	public class name;
	public void show(){
   }
}

1554712298729

5、static关键字

static 静态的

pablic static void main(String[] args){
}

1、static修饰的信息是属于类的,它是随着类的加载而加载的。

2、我们没有被static修饰的信息是非静态/实例的,多个示例/对象之间的信息是相互隔离。而static修饰时被多个实例共享。

3、被static修饰的信息可以直接采用类名.的形式来调用,也可以使用对象来调用(不推荐)

构造方法、静态代码块、成员代码块的加载顺序

static可以用来修饰属性、方法,还可以用来修饰代码块。

静态代码块 -> 构造代码块 -> 构造方法

​ 静态代码块先进行加载,只会加载一次。

​ 成员代码块每一次创建对象都会执行,优先于构造方法。

​ 构造方法随着对象的创建而执行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值