Java中的面向对象特征之封装
目录
- 作者介绍
- 前言
- 一、面向对象是什么?
- 二、类和对象是什么?
- 三、权限修饰符
-
- 1、权限修饰符介绍
- 2、权限修饰符总结
- 四、成员变量和局部变量的区别
- 五、this关键字
-
- 1、为什么要使用this?
- 2、this关键字介绍
-
-
- ⭐代码演示
-
- 六、 构造方法
-
- 1、什么是构造方法?
- 2、构造方法格式
- 3、构造方法执行的时机
- 4、构造方法的作用
- 5、构造方法的注意事项
- 6、无参构造和带参构造方法的使用
-
-
- ⭐代码演示
-
- 7、构造方法生成的快捷键
- 8、setXxx/getXxx方法生成快捷键
- 9、set方法和带参构造方法都可以为成员变量赋值,有什么区别?
- 七、封装
-
- 1、什么是封装?
- 2、封装在代码中的常见体现
- 3、封装小结
- 4、标准的封装例子
- 作者:KJ.JK
作者介绍
⭐ 作者简介:KJ.JK,CSDNJava领域新星作者 ⭐ 参加获奖过蓝桥杯、中国软件杯云计算、互联网+、创新创业大赛银奖 ⭐ 力扣、洛谷、牛客网、Vijos共3000道刷题记录 ⭐ 欢迎大家 点赞👍 收藏💖 关注🔒
前言
本文介绍JavaEE中的面向对象内容,包括什么是对象,怎么创建对象,构造方法使用详情,面向对象的封装特性,成员变量和局部变量的局部,以及this关键字用法,话不多说,直接上代码!!!!💪💪💪
一、面向对象是什么?
面向对象: 一种编程思想------------------------------------------------------------------------------------------------------------------------------------------为什么要学? 因为这套思想来自生活,生活解决问题,就是一个个的对象在一起打交道,从而将问题解决 我们写代码的时候,如果也使用这种思想,编程就会更加贴近生活------------------------------------------------------------------------------------------------------------------------------------------学什么:1.学习自己如何设计对象2.学习已有的对象怎么使用
二、类和对象是什么?
1、类和对象
Java中想要创建对象,必须要先有类的存在
2、类的介绍
什么是类:一组相关属性和行为的集合,将其看做是一张对象的设计图 类的特点: 1、类是对象的数据类型 2、类是具有相同属性和行为的一组对象的集合
3、类和对象的关系
*类:是对现实生活中一种具有共同属性和行为的事物的抽象 *对象:是可以看的到摸得着的真实存在的实体关系: 类是对象的设计图,需要根据类去创建对象数量关系:一对多的关系,根据一个类,创建出多个对象
4、类的组成
类的组成(属性和行为):类 --> 设计图 --> 描述一件生活中的事物 如: 学生: class Student{} 老师: class Teacher{} 手机: class Phone{}------------------------------------------------------------------------------------------------------------------------------------------ 类当中写什么? 属性(名词): 在代码中使用成员变量表示,成员变量和之前定义的变量一样,只不过位置在方法外 如:public class Phone {String brand; //方法外面的 成员变量 int prices;行为(动词):在代码中使用成员方法表示,成员方法和之前定义的方法一样,只不过不要 "static" 关键字 如: public void call() { //成员方法 System.out.println("打电话"); } }
5、对象
🐘创建对象
格式: 类名 对象名 = new 类名(); 范例: Student stu =new Student();
🐘使用对象属性(成员变量)
格式: 对象名.变量名; 范例: 会结合打印,赋值使用 如: 1.取出成员变量并打印System.out.println(stu.name); //null 字符串默认nullSystem.out.println(stu.age); //0 整数默认0 2.访问成员变量并赋值 stu.name="张三"; stu.age=20;
⭐代码演示
//对象类public class Student {//属性: String name; int age ;//行为: public void study(){ System.out.println("学生学习..."); } public void eat(){ System.out.println("学生吃饭..."); }}
//测试类public class StudentTest { public static void main(String[] args) { Student stu =new Student(); //对象名.变量名; //取出成员变量并打印 System.out.println(stu.name); //null 字符串默认null System.out.println(stu.age); //0 整数默认0 System.out.println("-------------------------"); //访问成员变量并赋值 stu.name="张三"; stu.age=20; System.out.println(stu.name); //张三 System.out.println(stu.age); // 20 }}
扩展:打印对象名得到的是全类名
Student stu =new Student();System.out.println(stu); //Ooptest.Student@b4c966a 全类名@十六进制地址值 //@b4c966a这个是这个对象在堆内存当中的内存地址
🐘使用对象属性(成员方法)
格式:对象名.方法名(实际参数) 范例: stu.study(); //调用对象中的成员方法 stu.eat(); ------------------------------------------------------------------------------------------------------------------------------------------ 扩展: "成员方法的定义格式":格式:public void 方法名(){ //方法体 } 范例: public void show(){ .... }
⭐代码演示1(无参成员方法)
//对象类public class Student {//无参成员方法: public void study(){ System.out.println("学生学习..."); } public void eat(){ System.out.println("学生吃饭..."); }}
//测试类public class StudentTest { public static void main(String[] args) { Student stu =new Student(); //调用对象中的成员方法 stu.study(); stu.eat(); }}
⭐代码演示2(带参成员方法)
//对象类public class Phone {//带参成员方法: public void call(String name){ System.out.println("给"+name+"打电话"); } public void sendMessage(String name){ System.out.println("给"+name+"发信息"); }}
//测试类public class PhoneTest { public static void main(String[] args) { Phone p= new Phone(); p.call("张三"); p.sendMessage("李四"); }}
三、权限修饰符
1、权限修饰符介绍
权限修饰符(成员)private: 在同一个类中访问default(默认): 在同一个类中,同一个包下protected:在同一个类中,同一个包下,不同包的子类public:任意位置访问
2、权限修饰符总结
* 成员变量一般私有 * 类、方法、构造器一般公开 * 如果该成员只希望本类访问,使用private修饰 * 如果该成员只希望在本包和子类中访问,使用protected修饰 * 如果该成员只希望在本包中访问,使用缺省(默认不写)修饰符 * 常用的权限修饰符是public和private * public通常用于修饰类和方法, private用于修饰成员变量
四、成员变量和局部变量的区别
区别 成员变量 局部变量(不能加修饰符)类中位置不同 方法外 方法里面 初始化值不同 有默认初始化值 没有默认初始化值,使用前必须完成赋值 内存位置不同 堆内存(变量在堆内存开空间) "栈内存" (因为局部变量是在方法里面,而方法是需要被JVM调 用,进去栈内存执行的,所以在栈内存里面)生命周期不同 随着对象的创建而存在,随着对象的消失而消失 随着方法的调用而存在,随着方法的弹栈而消失 作用域不同 都是在自己所在的大括号中 例子: public class Student{public void setName(String name){ String name; name="张三"; int age; }}
五、this关键字
1、为什么要使用this?
当局部变量和成员变量出现了重名问题,Java会根据就近原则,优先使用局部变量非要使用成员变量的话,可以使用this关键字进行区分
2、this关键字介绍
this: 代表当前"类对象"的引用(地址) //就是当前类对象的地址值 哪一个对象调用的this,this就代表哪一个对象如:下面的两个this是不一样的: Phone p1=new Phone(); System.out.println("打印p1对象名----->"+p1); //打印p1对象名----->mythis.Phone@34a245ab(这个是p1地址值) p1.show(); //this打印出来的也是p1的地址值 Phone p2=new Phone(); System.out.println("打印p2对象名----->"+p2); //打印p2对象名----->mythis.Phone@7cc355be(这个是p2地址值) p2.show(); //this打印出来的也是p2的地址值
⭐代码演示
//对象类class Phone{ public void show(){ System.out.println(this); }}
//测试类public class PhoneTest { public static void main(String[] args) { Phone p1=new Phone(); System.out.println("打印p1对象名----->"+p1); //打印p1对象名----->mythis.Phone@34a245ab p1.show(); System.out.println("-------------------------"); Phone p2=new Phone(); System.out.println("打印p2对象名----->"+p2); p2.show(); }}
六、 构造方法
1、什么是构造方法?
介绍: 构建,创造对象的时候要执行的方法
2、构造方法格式
格式: 1. 方法名与类名相同,大小写也要一致 2.没有返回值类型,连void都没有 3.没有具体的返回值(不能由retrun带回结果数据) 例子: public Student(){ System.out.println("这是一个无参构造方法");}public Student(String name,int age){ this.name=name; this.age=age; System.out.println("这是一个带参构造方法"); }
3、构造方法执行的时机
执行时机: 1. 在创建对象的时候,被系统自动调用执行2. 每创建一次,就会执行一次构造方法 3. 不能手动调用构造方法
4、构造方法的作用
1.本质的作用:用于创建对象 2.结合执行时机产生的作用: 可以在创建对象的时候,给成员变量初始化 如: Student stu=new Student("张三",23); //创建对象的时候,给成员变量初始化 System.out.println(stu.name+"---"+stu.age);
5、构造方法的注意事项
1. 一个类中如果没有写任何的构造方法,系统将给出一个[默认的][无参数的]构造方法,保证你可以创建对象 2. 一旦手动给出了构造方法,系统将不会提供默认的构造方法了,这个时候就必须要赋值了 3.构造方法也是方法,允许重载关系出现 4.构造方法不允许手动调用,只有在new 对象的时候执行 这样子是不行的: stu.Student(); // 建议:无参构造方法,和带参数构造方法,都自己手动给出
6、无参构造和带参构造方法的使用
1.无参构造方法创建对象,通过setXxx方法赋值 如:StudentTestD stu =new StudentTestD();stu.setAge(23);stu.setName("张三");stu.show();------------------------------------------------------------------------------------------------------------------------------------------ 2.带参构造方法创建对象,在创建对象时直接赋值 如: StudentTestD stu1=new StudentTestD("李四",20); //输入的顺序和你在构造方法写的顺序一样 stu1.show();
⭐代码演示
//对象类public class StudentTestD { private String name; private int age; public void show(){ System.out.println("姓名"+name+",年龄为:"+age); } public StudentTestD(){ } public StudentTestD(String name,int age){ this.name=name; this.age=age; } 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 class StudentTestDemo { public static void main(String[] args) { //1.无参构造方法创建对象,通过setXxx方法赋值 StudentTestD stu =new StudentTestD(); stu.setAge(23); stu.setName("张三"); stu.show(); System.out.println("------------------------------");//2.带参构造方法创建对象,在创建对象时直接赋值 StudentTestD stu1=new StudentTestD("李四",20); //输入的顺序和你在构造方法写的顺序一样 stu1.show(); }}
7、构造方法生成的快捷键
第一步
第二步
第三步
8、setXxx/getXxx方法生成快捷键
第一步
第二步
9、set方法和带参构造方法都可以为成员变量赋值,有什么区别?
带参构造方法只能在创建对象的时候,完成一次赋值 set方法可以多次调用,反复去修改对象的属性的值
七、封装
1、什么是封装?
隐藏实现细节,仅对外暴露公共的访问方式
2、封装在代码中的常见体现
3、封装小结
*隐藏实现细节,仅对外暴露公共的访问方式将属性抽取到"类"中,这是"对数据"的一种"封装" 将代码抽取到"方法"中,这是"对代码"功能的一种"封装"
4、标准的封装例子
//对象类public class Student { private int age; public void setAge(int age){ if(age>=0&&age<=100){ this.age=age; }else { System.out.println("方法有错"); } } public int getAge(){ return age; }}
public class StudentTest { /* 标准的JavaBean : 1.所有的成员变量 使用 private 修饰 2.提供【空参】【带参】构造方法 3.针对于私有的成员变量,提供: setXxx \ getXxx方法 set: 设置\赋值 get: 获取 情况: 成员变量,没有进行数据的安全校验 有可能记录到一些错误的数据,如负数的年龄 解决: 1.成员变量私有化 错误的数据进不来了,但同时,正确的数据也进不来了 2.提供对应的set\get 方法 */ public static void main(String[] args) { Student stu=new Student(); stu.setAge(20); System.out.println(stu.getAge()); }}
作者:KJ.JK
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习