面向对象-------------------------------------------------------------------》》封装

封装

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

  1. 面向对象和面向过程的编程思想和编程方式。
  2. 了解了生活中的类和对象
  3. 程序中如何从生活中抽象出类和对象
  4. Java中类和对象的使用
  5. 方法:面向过程的核心
    1. 方法的分类 4大种
    2. 方法的使用
    3. 构造方法
    4. this
    5. 方法重载
    6. 成员变量和局部变量的区别

1. 理解封装的作用

  1. 可以有效解决不合理赋值的问题。
  2. 可以降低程序之间的耦合性。(牵连小)
  3. 可以提升代码的复用性。
  4. 降低了大型系统的风险…

2. 掌握封装的使用

  1. 将属性私有化 (添加private修饰符)
  2. 给属性提供对应的公共的(public)getter/setter方法。
  3. 根据需求在对应的方法中添加逻辑控制语句。

合理的Java Bean规范(扩展)

  1. 属性私有化
  2. 提供公共的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();
	}
	
}

宠物商店案例:结合封装来实现

需求:

​ 浩然宠物商店贩卖宠物狗和宠物猫

​ 客户可以选择购买宠物狗 或者 是宠物猫

​ 客户可以选择狗的品种

​ 客户可以选择猫的性别

​ 最后打印购买的宠物信息

3. 会使用Java的包来组织类

package

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

为什么使用包:

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

扫描二维码关注公众号,回复: 6200702 查看本文章

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

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

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

如何使用包:

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

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

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

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

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

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

​ 例如:

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

包的命名规范:

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

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

​ com.tencent.部门名称.weixin.****(不同公司的包命名方式会有出入)

4. 理解和掌握使用访问修饰符

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

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

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

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

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

public class 类名{
    public String name;
    public void show(){
        
    }
}
修饰符\作用域 同一个类 同一个包 子类 项目任何地方
private x x x
默认/包级 x x
protected x
public

5. 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("静态代码块执行了!");
	}
}

猜你喜欢

转载自blog.csdn.net/hollow_0120/article/details/89067145