九 封装

第九章 封装

面向对象的三大特性: 封装(基础)、继承、多态、(抽象)

1.面向对象和面向过程的编程思想和编程方式。

2.了解生活中的类和对象

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

4.Java中类和对象的使用

5.方法:面向过程的核心

1.方法的类  4大种
2.方法的使用
3.构造的方法
4.this
5方法重载
6.成员变量和局部变量的区别
一、理解封装的作用

1.可以有效处理解决不合理赋值问题

2.可以降低程序之间的耦合性

3.可以替身代码的复用性

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

二、掌握封装的使用

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

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

3.根据需求在对应的方法中添加逻辑控制语句。

合理的Java Bean规范

1.属性私有化

2.提供s公共的getter/setter方法

3.提供无参构造

4.实现序列化接口serializable

import java.io.Serializable;

/**
 * Java Bean规范
 * @author zyx9798
 *
 */
// 了解
public class Person implements Serializable{

	// 了解
	private static final long serialVersionUID = 2250398795727474486L;
	
	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 setGender(char gender) {
		this.gender = gender;
	}
	
	public Person() {
		super();
	}
	
}
三、会使用Java的包来组织类

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

为什么使用包

因为在同一个文件夹下 是无法存放多个同名文件内容的
因为在同一个文件夹下 如果所有文件放在一起,无法有效的进行区分和查找
可以根据包来定义访问权限。
模仿了Windows等系统的树形结构目录

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

package 包名;

如何使用包:

在定义好包之后,如果在包下定义类,类中能够一定要在有效代码的第一行添加package包声明
package 包名;

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

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

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

import导入包声明,需要放在package声明下,类声明上他们之间的顺序是固定的

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

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

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

包的命名规范:

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

我在腾讯(www.tencent.com)的通讯部 做微信开发

com.tencent.部门名称.weixin.

四、理解和掌握使用访问修饰符

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

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

默认/包级 访问修饰符 (default/friendly) 什么都不加就是默认访问修饰符 protected 受保护的 只能在同一个包中使用

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

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

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

在这里插入图片描述

五、### static 关键字(难点)

static 静态的

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

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

普通的实例信息随着对象的创建而产生

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

普通的实例信息是对象之间相互独立的

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

在这里插入图片描述

加载顺序

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

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

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

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

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

当出现了父类、子类关系后 父类的相关代码块和方法加载顺序如下:

public class Student {

public String name;
public int age;
public static int classId;


//每一次创建对象都会执行 优先构造方法执行
//代码块 / 构造代码块 /成员代码块 /非静态代码块
{
    System.out.println("构造代码块执行了!")
}

public student(){
    System.out.println("构造方法执行了!")
}

//静态代码块  它随着类的加载而出现 所以只会在第一次创建对象时执行
static {
    System.out.println("静态代码块儿执行了!")
	}

}


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值