Java带你去看流浪世界!(九)

封装

面向兑现的三大特征:封装(基础),继承,多态。(抽象)

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

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

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

4.Java中类和对象的使用

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

	1.方法的分类  4大类

	2.方法的使用

	3.构造方法

	4.this

	5.成员变量和局部变量的区别

1.属性私有化(将属性的访问修饰符更改为private。

2.提供公共的getter和setter方法。

getter:是外界获取该属性值(get)

setter:外界给该属性赋值(set)

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

1.理解封装的作用

出现不合理赋值却语法成立原因:

1.health是int类型的,int类型的取值范围,int是Java默认的整数类型,负数是包含在这个范围内的。

(如果想更换数据类型来解决,发现其他的类型要么无法存储,要么也可以去负数)

2.虽然可以通过添加方法来进行赋值同时判断,但是因为health可以直接放访问赋值,不安全,有可能不去使用你自己定义的赋值方法

(因为变量无法直接赋值的同时进行判断,所以我们定义了方法,在赋值的同时进行了判断)。
//公共的public
public int healet;
//私人的private(给自己的数值加了一道防盗锁)只能在类中使用
private int healet;
//所去的健康值是0-100,现在是-10却不报错healet值为int
panda.sethealet = -10;

panda.love = 30;

panda.showMyself(){
    syso(xxxx);
}

1.便于使用者正确使用系统,防止错误修改属性

可以有效解决不合理赋值的问题。

2.有助于系统之间的松耦合(低耦合),提高系统独立性。

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

3.可以提高软件的可适用性。

可以提升代码的复用性

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

2.掌握封装的使用

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

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

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

合理的Java Bean规范

1.属性私有化

2.提供公共的getter和setter方法

3.提供无参构造

4.实现序列化接口 serializable

//规范,快捷键Alt + /(补全)
public class person implements Serializable{
    private static final long serialVersionUid = 5206280412034862968L
    private String name;
}
//快捷键:Alt + Shift + s---r---Alt + a---Alt + r(自动生成)

宠物商店案例

需求:

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

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

客户可以选择狗和猫的品种

客服可以选择狗和猫的性别

最后打印购买狗和猫的属性

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

package

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

为什么实用包

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

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

根据不同的包来访问不同的权限。

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

如何使用包

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

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

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

<u>import</u>导入包声明,需要放在package声明下,类声明上的位置。

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

<u>java.lang</u>包下的内容不需要手动导入!例如;System,String

例如:
package cn.kgc.demo1;
//导入时,可以使用精细导入(全类名  /  全限定名  /  全/类路径),也可以使用批量通配导入*
import java.util.Scanner;
public static void main(String[] ager){
    Scanner input = new Scanner(System.in);
}

包的命名规范

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

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

com.tencent.部门名称.weixin.****(不同公司的包命名方式会有出入,都有一定的规范)

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

public 公共的,在整个项目中都能用,空心的绿色圆形

private 私有的,只能在同一个类中使用,实心的红色正方形

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

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

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

//一个java文件有且只有一个public修饰的类,被public修饰的类,要和java文件同名
public class 类名{
    public String name;
    public void show(){
        
    }
    //只能在同一个类中直接使用
    private String name;
    //在整个项目中都能使用
    public int age;
    //只能在用一个包中使用
    char gender;
}

访问修饰符,例图
在这里插入图片描述

5.static关键字(好好掌握)

static静态的

//类的信息是随着类的加载而出现
//实例信息是随着队形的创建而出现
public static int classId;
//实例变量
public String name;
//静态/非实例变量
//多个对象之间共享类信息,其中一个改变,会导致其他对象的值也会更改
public static void main(String[] ager){

}

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

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

3.被static修饰的信息可以直接采用类名,的形式来调用,也可以使用对象调用(不推荐对象调用)。
在这里插入图片描述
加载顺序

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

2.静态代码块---->构造代码块—>构造方法

疑问

当出现了父类,子类关系后

	父类的相关代码块和方法,子类的相关代码和方法,加载顺序如何?
public String name;
public Student(){//构造方法
     System.out.println(xxx);
}
public static int classId;
	//每一次创建对象都会执行,优先构造方法执行
	//代码块/构造代码块/成员代码块/非静态代码块
	{
        System.out.println(xxx);
    }
//它随着类加载而出现,所以只会在【第一次创建对象时执行】,切第一个执行,优先于构造代码块和构造方法
//静态代码块
static{
     System.out.println(xxx);
}

类和对象的概念

类是从一群对象中抽象而出的一个模板

对象是基于类产生的一个实例个体。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值