[Java] 纯文本查看 复制代码
package com.it.day07.Demo01;
/**
* 面向对象(类、封装、this、构造方法)
*
* 三大特征是:封装,继承,多态
* 理解面向对象思想:在刚刚学习javaee编程,比如水仙花,首先是搞清楚要做什么,然后分析怎么做,最后代码的实现。
* 每一步骤我们都是参与者,并且需要面对具体的每一个步骤和过程,这是面向过程的表现。
* 那么什么事面向对象开发呢?
* 在刚学习编程需求简单单一,只要按照步骤去操作,这样没问题,毕竟开发会跟着需求增多而修改,功能增多。开始思索,
* 能不能把这些步骤,根据不同的功能,进行封装,公共的部分进行封装,用的时候,找到相应的类就可以了,这就是面向对象思想。
*
* 面向对象的思想:
* 1.面向对象是基于面向过程的编程思想。
* 2.面向过程:强调是每一个功能的步骤。
* 3.面向对象:强调的是对象,然后由对象去调用。
* @author zx
*/
public class ObjectOriented {
}[mw_shl_code=java,true]package com.it.day07.Demo01;
/**
* 类是一种引用类型,不能直接使用,如果想用这个类,一定要根据这个类创建一个对象 *
* 类使用三个步骤:
* 1.导包
* 如果使用目标类,和当前类,位于同一个package包下,那么可以省略导包语句不写。
* 2.创建
* 数据类型 变量名称 = new 数据类型();
* 对应:类名称 对象名 = new 类名称();
* Studend stu = new Student();
* 3.使用
* 使用成员变量:变量名.成员变量
* 使用变量方法:变量名.成员方法();
*
* 如果成员变量没有赋值,那么会有一个默认值。
* 如果是整数就是0,如果是浮点型就是0.0,如果是字符就是'\u0000',如果是布尔就是true或false
* 如果是引用类型就是null
* @author zx
*/
public class Demo02Student {
public static void main(String[] args) {
Student stu = new Student();
System.out.println(stu.name);//null 成员变量没有初始化默认为初始值
System.out.println(stu.age);//0
stu.eat();
stu.sleep();
stu.study();
}
}
[mw_shl_code=java,true]package com.it.day07.Demo01;
/**
* 类与对象及使用
* 定义一个类,用来模拟现实世界中的学生的事物
* 学生事物包含两个部分:
* 属性:姓名、年龄、性别
* 行为:吃饭、睡觉、学习
* 对应到类中:
* 成员变量(属性)
* String name;
* int age;
* boolean ex;
* 成员方法(行为)
* public void eat(){...}//吃饭
* public void sleep(){...}//睡觉
* public void study(){...}//学习
* 注意事项
* 1.如果一个变量直接定义在类中,不在方法中,那么这就是一个成员变量。
* 2.如果一个方法定义的时候,去掉关键字static,那么这就是成员方法。
*
* 对象的创建及其使用
* 创建对象:类名 对象名 = new 类名();
* 使用对象访问类中的成员:
* 对象名.成员变量
* 对象名.成员方法
*
* 成员变量和局部变量的区别
* 1.位置不同
* a 成员变量:类中,方法外
* b 局部变量:方法中或者方法生命上(形参)
* 2.在内存中的位置不同
* a 成员变量:栈内存
* b 局部变量:堆内存
* 3.生命周期不同
* a 成员变量:随着对象的创建而存在,随着对象的消失而消失
* b 局部变量:随着方法的调用而存在,随着方法调用完而消失
* 4.初始值不同
* a 成员变量:有默认值 ;b 局部变量:没有默认值,必须先定义,赋值,后使用。
* @author zx
*/
public class Student {
//成员方法
String name;//姓名
int age;//年龄
//成员方法
public void eat(){
System.out.println("吃饭!!!");
}
public void sleep(){
System.out.println("睡觉!!!");
}
public void study(){
System.out.println("学习!!!");
}
}
[mw_shl_code=java,true]package com.it.day07.Demo01;
/**
* 构造方法也是一种方法,但是是专门用来创建对象的方法。
* 当通过new关键字创建一个对象的时候,实际上就是在调用构造方法。
*
* 构造方法的格式:
* public 类名称(参数类型 参数名称, ...) {
* 方法体;
* }
*
* 注意事项:
* 1. 构造方法的名称必须和所在的类名称完全一样,大小写也要一样。
* 2. 构造方法根本不写返回值类型,连void都不写。
* 3. 如果没有定义任何构造方法,那么编译器(javac)将会赠送一个默认的。
* 4. 如果自定义了至少一个构造方法,那么编译器将不再赠送构造方法。
* 5. 构造方法也可以进行重载(Overload):名字一样,参数不一样。
* @author zx
*
*/
public class PersonConstructor {
// 成员变量
private String name;
private int age;
//默认构造器
public PersonConstructor(){
}
//自定义带参数的构造器
public PersonConstructor(String name, int age) {
super();
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;
}
}
[mw_shl_code=java,true]package com.it.day07.Demo01;
/**
* 封装
* 问题描述:定义Person的时候,无法阻止错误的脏数据被设置到成员变量中。
* 解决方案:使用一个private关键字将需要保护的成员变量修饰一把。
*
* 一旦被private修饰,那么只有本类当中才可以直接访问。超出了本类的范围,外面不能直接访问。
* 专门为private的成员编写,编写一对儿成员方法:Setter Getter
*
* 使用private关键字练习定义一个手机类。
*
* 属性:品牌、价格、颜色
* 行为:打电话、发短信
*
* private关键字:是一个权限修饰符。可以修饰成员(成员变量和成员方法), 被private修饰的成员只在本类才能访问。 *
* 需要为每一个private成员变量编写一对儿Setter Getter方法
* 【特例】对于基本数据类型当中的boolean来说,setXxx规则不变,但是getXxx一定要命名成为isXxx的形式。
*
* 封装的好处:1.通过方法来控制成员变量的操作,提高了代码的安全性;2.把代码用方法进行封装,提高了代码的复用性。
*
* this关键字
* this代表所在类的对象引用;记住:方法被那个类调用,this就代表那个对象
* @author zx *
*/
public class Phone {
private String brand; //品牌
private double price;//价格
public void call(String who){//成员方法 打电话
System.out.println("给" + who + "打电话");
}
public void sendMessage(){//成员方法 发短信
System.out.println("群发短信");
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
private String color; //颜色
}
[mw_shl_code=java,true]package com.it.day07.Demo01;
/**
* 测试调用Phone类对象
* @author zx *
*/
public class Demo02Phone {
public static void main(String[] args) {
Phone phone = new Phone();
phone.call("马云");
phone.sendMessage();
}
}
[/mw_shl_code][/mw_shl_code][/mw_shl_code][/mw_shl_code][/mw_shl_code]