【无标题】JAVA的学习 您所在的位置:网站首页 变量要斜体吗还是正体呢 【无标题】JAVA的学习

【无标题】JAVA的学习

2023-06-03 10:41| 来源: 网络整理| 查看: 265

封装

1.面向对象的三大特征:

封装

继承

多态

有了封装,才有继承,有了继承,才能说多态.

2.面向对象的首要特征:封装

手机,笔记本,这些都是外部有一个坚硬的壳,封装起来,保护内部的部件.

3.封装的作用有两个:

第一:保证内部结构的安全

第二:屏蔽复杂,暴露简单

在代码级别上,封装有什么用?

一个类体当中的数据,假设封装之后,对于代码的调用来说,不需要关心代码的复杂实现,只需要通过一个简单的入口就可以访问了.另外,类体中安全级别较高的数据封装起来,外部人员不能随意访问,来保证数据的安全性.

4.怎么进行封装

封装一下,不再对外暴露复杂的数据,封装起来,对外只提供简单的操作入口. //优点:第一数据安全了.第二调用者也方便了 public class PersonTest02{ public static void main(String[] args){ //创建对象 Person p1 = new Person(); System.out } } public class Person{ //private表示私有的,被这个关键字修饰之后,该数据只能在本类中访问.出了这个类,age属性就无法访问了.私有的 private int age; //对外提供简单的访问入口 //外部程序只能通过调用以下的代码来完成访问 //应该提供几个访问入口? //写一个方法专门完成读(get) //写一个方法专门来完成写(set) //get和set方法应该带有static,还是不应该有static,get和set方法应该定义为实例方法 //get读年龄,set改年龄,这个读和改都是操作的一个对象的年龄. //对外提供公开的set和get作为操作入口,并且都不带static /* [修饰符列表] 返回值类型 方法名(形式参数列表){ } */ 注意: java开发规范中有要求,set方法和get方法要满足以下格式. get方法的要求: public 返回值类型 get+属性名首字母大写(无参){ return xxx; } set方法的要求: public void set+属性名首字母大写(有一个参数){ xxx = 参数; } //get方法 public int getAge(){ return age; } //set方法 public void setAge(int nianling){ //能不能在位置上设置关卡 if(nianLing 150){ System.out.println("对不起,年龄值不合法,请重新赋值!"); return; //直接终止程序的执行 } age = nianling; } } 带有static的方法 没有static的方法 分别怎么调用 //带有static的方法怎么调用? 通过"类名."的方式访问. //对象被称为实例 //实例相关的有:实例变量,实例方法. //实例变量是对象变量.实例方法是对象方法 //实例相关的都需要先new对象,通过"引用."的方式去访问. public class MethodTest{ public static void main(String[] args){ MethodTest.doSome(); //类名.可以省略(在同一个类中.) doSome(); //创建对象 MethodTest mt = new MethodTest(); //通过"引用."的方式访问实例方法 mt.do } //带有static public static void doSome(){ System.out.println("do some!"); } //这个方法没有static,这样的方法被称为:实例方法. public void doOther(){ } }

5.封装的代码实现两步:

第一步:属性私有化

第二步:1个属性对外提供两个set和get方法.外部程序只能通过set方法修改,只能通过get方法来进行读 static:

static 翻译为"静态的"

所有static关键字修饰的都是类相关的,类级别的.

所有static修饰的,都是采用"类名."的方式访问.

static修饰的变量:静态变量

static修饰的方法:静态方法

变量的分类:

变量根据声明的位置进行划分: 在方法体当中声明的变量叫做:局部变量. 在方法体外声明的变量叫做:成员变量. 成员变量又可以分为: 实例变量 静态变量 class VarTest{ //以下实例的,都是对象相关的,访问时采用"引用."的方式访问.需要先new对象. //实例相关的,必须先有对象,才能访问,可能会出现空指针异常 //成员变量中的实例变量 int i; //实例方法 public void m2(){ //局部变量 int x = 200; } //以下静态的,都是类相关的,访问时采用"类名."的方式访问.不需要new对象. //不需要对象的参与即可访问.没有空指针异常的发生. //成员变量中的静态变量 static int k; //静态方法 public static void m1(){ //局部变量 int m = 100; } } 什么时候变量声明为实例的,什么时候声明为静态的? 如果这个类型的所有对象的某个属性值都是一样的,不建议定义为实例变量,浪费内存空间.建议定义为类级别特征,定义为静态变量,在方法区中只保留一份,节省内存开销 //加static的变量叫做静态变量 //静态变量在类加载时初始化,不需要new对象,静态变量的空间就开出来了. //静态变量存储在方法区. public class StaticTest02{ public static void main(String[] args){ //访问中国人的国籍 //静态变量应该使用类名. 的方式访问 System.out.println(Chinese.country); Chinese c1 = new Chinese("111111111111","张三"); System.out.println(c1.name); Chinese c2 = new Chinese("111111111112","李四"); System.out.println(c2.name); } } //定义一个类:中国人 class Chinese{ String idCard; String name; static String country = "中国"; //国籍并不是对象级别的特征,国籍属于整个类的特征.整个族的特征 //无参数 public Chinese(){ } }

空指针异常

实例的:一定需要使用"引用."来访问. 静态的: 建议使用"类名."来访问,但使用"引用."也行(不建议). 结论: 空指针异常只有在"空引用"访问"实例"相关的,都会出现空指针异常. public class StaticTeat03{ public static void main(String[] args){ System.out.println(Chinese.country); Chinese c1 = new Chinese("111111111111","张三"); System.out.println(c1.name); c1 = null; System.out.println(c1.country); //不会出现空指针异常 System.out.println(c1.name); //会出现空指针异常,因为name是实例变量 } } class Chinese{ //实例变量 String idCard; String name; //静态变量 static String country = "中国"; //构造方法 public Chinese(String x,String y){ idCard = x; name = y; } } 关于方法来说,什么时候定义为实例方法?什么时候定义为静态方法? 此方法一般都是描述了一个行为,如果说该行为必须由对象去触发.那么该方法定义为实例方法. 参考标准: 当这个方法体当中,直接访问了实例变量,这个方法一定是实例方法.如果是工具类的话,工具类当中的方法一般都是静态的.(静态方法有一个优点,是不需要new对象,直接采用类名调用,极其方便.) 类 = 属性 + 方法 属性:状态 方法:行为动作 一个方法代表了一个动作 什么时候方法定义为实例方法? 不同的对象参加考试的结果不同. 我们可以认定"考试"这个行为 public class StaticTest05{ public static void main(String[] args){ User u = new User(); System.out.println(u.getId()); //0 User x = new User(); x.printName1(); } } class User{ //实例变量,需要对象 private int id; //实例变量 private String name; public void printName1(){ System.out.println(name); } public void setId(int i){ id = i; } public int getId(){ return id; } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有