13.面向对象

一、介绍

  • 面向:拿、找。
  • 对象:能干活的东西。
  • 面向对象编程:拿东西过来做对应的事情。

例子:
在这里插入图片描述

二、设计对象并使用

1.类和对象

  • 类(设计图):是对象共同特征的描述;
  • 对象:是真实存在的具体东西。

在java中,必须先设计类,才能获得对象

public static phone{

}

在这里插入图片描述

2.如何定义类

public static 类名{
1.成员变量(代表属性,一般是名词)
2.成员方法(代表行为,一般是动词)
3.构造器
4.代码块
5.内部类
}

示范

public class Phone {
        //属性(成员变量)
        String ming;
        double dianLiang;
        
        //行为(方法)
        public void dianHua () {
        }
        public void playGame () {
        }
    }

3.如何得到类

类名 对象名 = new 类名();Phone p = new Phone();

示范:

1.创建一个类

在这里插入图片描述

public class Phone {
    //属性(成员变量)
    String ming;
    double jiaGe;

    //行为(方法)
    public void dianHua () {
        System.out.println("手机在打电话");
    }
    public void playGame () {
        System.out.println("手机在玩游戏");
    }
}

2.创建测试类

在这里插入图片描述

public class PhoneCeshi {
    public static void main(String[] args) {
        //创建手机的对象
        Phone P = new Phone();
    }
}

4.如何使用对象

  • 访问属性:对象名.成员变量
  • 访问行为:对象名.方法名(…)

示范:

public class PhoneCeshi {
    public static void main(String[] args) {
        //创建手机的对象
        Phone P = new Phone();

        //给手机赋值
        P.ming = "vivo";
        P.jiaGe = 1999.98;

        //获取手机对象中的值
        System.out.println(P.ming);
        System.out.println(P.jiaGe);

        //调用手机中的方法
        P.dianHua();
        P.playGame(); 
        
        Phone P2 = new Phone();
        
        P2.ming = "苹果";
        P2.jiaGe = 15599;

        System.out.println(P2.ming);
        System.out.println(P2.jiaGe);

        P2.dianHua();
        P2.playGame();
    }
}

在这里插入图片描述

5.注意事项

  • 用来描述一类事物的类,专业叫作:Javabean类
    在javabean类中,是不写main方法的。
  • 在以前,编写main方法的类,叫作测试类
    我们可以在测试类中创建javabean类的对象并进行赋值调用。

在这里插入图片描述

  • 一个java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。
    实际开发中建议还是一个文件定义一个class类
  • 成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;一般无指定初始化值,存在默认值。

6.对象的成员变量的默认值规则

在这里插入图片描述

7.示范(女朋友类)

编写女朋友类,创建女朋友类的对象
给女朋友的属性赋值并调用女朋友类中的方法。

public class nPy {
//属性
    String name;
    String shengRe;
//行为
    public void jinRanzhiye(){
        System.out.println("消耗三点鬼火,释放烬燃之夜");
    }
}
public class nPyceshi {
    public static void main(String[] args) {
        //创建对象(女朋友)
        nPy n = new nPy();

        //给女朋友赋值
        n.name = "不知火";
        n.shengRe = "5.10";

        //获取女朋友的值
        System.out.println(n.name);
        System.out.println(n.shengRe);
        //调用女朋友的方法
        n.jinRanzhiye();
    }
}

在这里插入图片描述

三、开发中类的设计

在这里插入图片描述

public class Student {
    String id;
    String name;
    char gender;
    int age;
    String schoolName;
    
    public boolean checkID(){
        ......
    }
}

四、封装

告诉我们,如何正确设计对象的属性和方法

对象代表什么,就得封装对应的数据,并提供数据对应的行为。

需求:定义一个类描述人
属性:姓名,年龄
行为:吃饭,睡觉

示范(不用封装):

public class dyir {
    String name;
    int age;
    
    public void eat(){
        System.out.println("吃饭");
    }
    public  void sleep(){
        System.out.println("睡觉");
    }
}

例一(人画圆):

需求:人画圆,请针对这个需求进行面向对象设计

在这里插入图片描述

public class rengYuan {
    double banJin;

    public void huaYuan(){
        System.out.println("根据半径" + banJin + "画一个圆");
    }
}

例二(人关门):

public class closeDoor {

    boolean flag = true; //门的状态数据
    public void open(){
        ...//开门,修改门的状态
    }
    public void close(){
        ...//关门,修改门的状态
    }
}

1.private关键词

  • 是一个权限修饰符
  • 可以修饰成员(成员变量和成员方法)
  • private修饰的成员只能在本类中才能访问

如:(不安全)

public class anquan {
        String name;
        int age;
        String ggender;
    }

如何安全:(加private)

public class anquan {
       private String name;
       private int age;
       private String ggender;
    }

标准代码

public class pri {

    private  int age;//外部不能直接访问 age
    
    //set(赋值)
    public void setAge(int a){
        if(a>=18&&a<=50){
            age = a;
        }else{
            System.out.println("非法数据");
        }
    }
    //get(获取)
    public int getAge() {
        return age;
    }
}

在这里插入图片描述

测试

1、输入非法数据
public class priceshi {
    public static void main(String[] args) {
        pri cesi1 = new pri();
        cesi1.setAge(5);

        int i = cesi1.getAge();
        System.out.println(i);
    }
}

在这里插入图片描述

2、输入合法数据
public class priceshi {
    public static void main(String[] args) {
        pri cesi1 = new pri();
        cesi1.setAge(19);

        int i = cesi1.getAge();
        System.out.println(i);
    }
}

在这里插入图片描述

总结:

针对于每一个私有化的成员变量,都要提供get和set方法
set方法:给成员变量赋值
get方法:对外提供成员变量的值

在这里插入图片描述

五、就近原则和this关键字

1.就近原则

System.out.println(age);
System.out.println(this.age);

2.this的作用
可以区分成员变量和局部变量。

重名时
加了this关键字,就代表全局变量.
不加就取最近的变量。

六、构造方法

构造方法也叫构造器,构造函数
作用:在创建对象的时候给成员变量进行初始化的。

如:

 pri cesi1 = new pri();

表示调用空参的构造方法

构造方法的格式

public class pri{
      修饰符 类名(参数){
            方法体;
      }
}

特点:
1.方法名与类名相同,大小写也要一致
2.没有返回值类型,连void都没有
3.没有具体的返回值( 不能由 return 带回结果数据)

在这里插入图片描述
执行时机:
1.创建对象的时候由虚拟机调用,不能手动调用构造方法
2.每创建一次对象,就会调用一次构造方法

七、标准的JavaBean类

1.类名需要见名之意。
2.成员变量使用private修饰。
3.提供至少两个构造方法

  • 无参构造方法
  • 带全部参数的构造方法

4.成员方法

  • 提供每一个成员变量对应的setXxx()/getXxx()
  • 如果还有其他行为,也需要写上

例:

public class pri {
    private  int age;

    public pri() {
    }

    public pri(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }
//还有to......的

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值