前言
经过了好几天的歇业,终于把第六天的课程学完了,类、对象、封装及构造方法,感觉从C转成JAVA确实有一定的不适应,这方面刷题好像也弥补不过来。只能通过自己思维的转变去深入的了解JAVA与C的区别,努力吧,骚年!
面向对象的思想
面向对象思想概述
Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,
使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面
向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算
机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去
操作实现。
类和对象的关系
- 类是对一类事物的描述,是抽象的。
- 对象是一类事物的实例,是具体的。
- 类是对象的模板,对象是类的实体。
类的定义格式
成员变量:对应事物的属性
成员方法:对应事物的行为
类的定义格式举例:
public class Student { //成员变量 String name;//姓名 int age;//年龄 //成员方法 //学习的方法 publicvoid study() { System.out.println("好好学习,天天向上"); } //吃饭的方法 publicvoid eat() { System.out.println("学习饿了要吃饭"); } }
对象的使用
创建对象:类名 对象名 = new 类名();
使用对象访问类中的成员:
- 对象名.成员变量;
- 对象名.成员方法();
- 对象使用格式举例:
public class Test01_Student { public static void main(String[] args) { //创建对象格式:类名 对象名 = new 类名(); Student s = new Student(); System.out.println("s:"+s); //cn.itcast.Student@100363 //直接输出成员变量值 System.out.println("姓名:"+s.name); //null System.out.println("年龄:"+s.age); //0 System.out.println("‐‐‐‐‐‐‐‐‐‐"); //给成员变量赋值 s.name = "赵丽颖"; s.age = 18; //再次输出成员变量的值 System.out.println("姓名:"+s.name); //赵丽颖 System.out.println("年龄:"+s.age); //18 System.out.println("‐‐‐‐‐‐‐‐‐‐"); //调用成员方法 s.study(); // "好好学习,天天向上" s.eat(); // "学习饿了要吃饭" } }
一个关于类和对象的练习
定义手机类:
public class Phone { // 成员变量 String brand; //品牌 int price; //价格 String color; //颜色 // 成员方法 //打电话 public void call(String name) { System.out.println("给"+name+"打电话"); } //发短信 public void sendMessage() { System.out.println("群发短信"); } }
定义测试类:
public class Test02Phone { public static void main(String[] args) { //创建对象 Phone p = new Phone(); //输出成员变量值 System.out.println("品牌:"+p.brand);//null System.out.println("价格:"+p.price);//0 System.out.println("颜色:"+p.color);//null System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐"); //给成员变量赋值 p.brand = "锤子"; p.price = 2999; p.color = "棕色"; //再次输出成员变量值 System.out.println("品牌:"+p.brand);//锤子 System.out.println("价格:"+p.price);//2999 System.out.println("颜色:"+p.color);//棕色 System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐"); //调用成员方法 p.call("紫霞"); p.sendMessage(); } }
封装
封装概述
面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。
封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的
方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
原则
将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。
封装的步骤
- 使用 private 关键字来修饰成员变量。
- 对需要访问的成员变量,提供对应的一对 getXxx 方法 、 setXxx 方法
封装的操作——private关键字
- 含义:
private是一个权限修饰符,代表最小权限。 可以修饰成员变量和成员方法。 被private修饰后的成员变量和成员方法,只在本类中才能访问
- 使用格式:private 数据类型 变量名;
- 使用private修饰成员变量,代码如下:
public class Student { private String name; private int age; }
- 提供 getXxx 方法 / setXxx 方法,可以访问成员变量,代码如下:
public class Student { private String name; private int age; public void setName(String n) { name = n; } public String getName() { return name; } public void setAge(int a) { age = a; } public int getAge() { return age; } }
封装优化-this关键字
- 总结:this代表所在类的当前对象的引用(地址值),即对象自己的引用,相当于自己调用自己,让代码看起来更规范好看一些。
- 使用格式:this.变量名字;
- 使用this修饰方法中的变量,解决成员变量被隐藏的问题,代码如下:
public class Student { private String name; private int age; public void setName(String name) { //name = name; this.name = name; } public String getName() { return name; } public void setAge(int age) { //age = age; this.age = age; } public int getAge() { return age; } }
个人疑问
封装的好处
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点:
- 良好的封装能够减少耦合。
- 类内部的结构可以自由修改。
- 可以对成员变量进行更精确的控制。
- 隐藏信息,实现细节。
java 封装,说白了就是将一大坨公共通用的实现逻辑玩意,装到一个盒子里(class),出入口都在这个盒子上。你要用就将这个盒子拿来用,连接出入口,就能用了,不用就可以直接扔,对你代码没什么影响。
对程序员来说,使用封装的目的:
1.偷懒,辛苦一次,后面都能少敲很多代码,增强了代码得复用性.
2.简化代码,看起来更容易懂.
3.隐藏核心实现逻辑代码,简化外部逻辑,并且不让其他人修改,jar 都这么干.
4.一对一,一个功能就只为这个功能服务;避免头发绳子一块用,导致最后一团糟.
get函数和set函数的大小写问题
get和set后面的函数的首字母必须大写,其次命名规范尽量用英语单词,显得专业。
总结
个人感觉JAVA里面的类和对象其实和C里面的函数差不多,只是JAVA把他分装起来,用的时候直接导入就可以了,最重要的还是可以重复性的调用,减轻代码量。