2020/3/13学习笔记-day18

java-day18

目录

数据隐藏

封装

方法重载

方法重载的要求:

重载的作用/意义


数据隐藏

在定义一个类的时候,我们需要考虑以下,类中的哪些属性/方法对外是可见的,哪些属性/方法对外是不可见的。

例如类中有些属性是内部使用,用来表示对象内部的一些状态,在这种情况下,其他代码中是没有必要知道我们对象里面这个属性的存在。这时候就可以使用private修饰符,把这些属性/方法隐藏起来。

注意,在使用private隐藏属性的时候,我们还可以现在当前是否允许用户设置或者访问这个属性,如果允许用户设置,那么就可以提供一个set方法,如果允许用户访问,那么就提供一个get方法,这时候,用户虽然不能直接访问这个属性,但是可以通过get/set方法间接的来访问这个属性,这样做的目的可以提供我们对这个属性的控制力,以及提高属性的安全。

public class Student{
​
public String name;
private int age;
​
public void setAge(int age){
    this.age = age;
}
public int getAge(){
    return this.age;
}
}
​
main:
Student s = new Student();
s.name = "tom";
System.out.println(s.name);
​
//s.age = 20;
//System.out.println(s.age);
s.setAge(20);
System.out.println(s.getAge());
​

注意,类中attribute和property的区别,一提到attribute,我们第一个想到的就应该是类中的属性,一提到property,我们第一个想到的就应该是类中get/set方法。

注意,property的规则就是,去掉get/set方法前面的get/set这个单词,然后剩下的单词,首字母小写,最后的结果就是property。所以get/set这个方法并不是property。

注意,property只是给get/set方法的特殊形式起了一个名字而已。这个特殊形式就是去掉get/set单词,剩下部分首字母大写。

注意,property指的都是这种特殊的方法,get/set方法,专门用来取值和设置值的方法。

封装

隐藏代码的实现细节

对于调用者来讲,很多时候,这个代码实现的细节,我们是没有必要、也不需要知道,我们只要知道这个方法叫什么名字,怎么去调用,调用的时候需要传什么参数,返回的结果是什么样子,以及调用的过程中可能会抛出什么异常,每种异常代表了什么情况等信息就可以了。也有一些情况,是方法/接口的提供提供者也不愿意让我们知道它们的实现细节,例如这些都是有商业用途的或者软件不开源的等情况。

统一用户的调用接口

假如有三个用户:user、vip、admin

查看当前的页面信息:

三个用户查看的到的内容是不同的,所以需要三个不同的方法针对这个三种用户,返回不同的信息

user showInfo_user( ) vip showInfo_ vip( ) admin showInfo_ admin( )

可以进行封装:

public String showInfo_a11(){
    //根据当前调用者角色身份,来确定主要执行的代码
    if(role == 0){
        //...........
    }
    else if(role == 1){
        //...........
    }
    else if(role == 2){
        //...........
    }
    return ... ;
}

提高系统的可维护性

从封装后的结果来看,对于调用者,需要调用的接口变少了,调用的方式也变简单了,提高了开发的效率,同时对于这些接口的提供者,我们维护接口的数量变少了,以前在很多地方编写的相同的代码,都封装起来,在其他地方进行调用,这样也减少了很多的维护工作量。

方法重载

重载和重写是java中和方法相关的两个非常重要的现象。

在一个类中,有多个方法的名字相同,但是方法的参数列表不同,这个情况就叫方法的重载。

例如,System. out. print1n中的println方法

总结:编译器在类中确认一个方法,只会通过方法名和参数列表,所以不同的俩个方法有三种情况:

1.方法名和参数类别都不同

2.方法名不同,参数列表相同

3.方法名相同,参数列表不同

如果一个类中出现了上面描述的第三种情况,那么就是方法的重载。

方法的参数列表不同,分为几种情况:

1.参数的个数不同

public void test(){}
public void test(int a){}
public void test(String s1,String s2){}

2.参数的类型不同

public void test(int a){}
public void test(String s){}
public void test(Student stu){}

3.参数的顺序不同

public void test(int a,String s){}
public void test(String s,int a){}

方法重载的要求:

1.在同一个类中

2.方法名相同

3.方法参数列表不同

4.修饰符、返回类型、抛出异常这些地方没有限制

重载的作用/意义

例如,我们一直使用的println方法 可以帮调用者输出数据,但是数据的类型有很多中,不同类型数据的处理方式还存在着差异,所以并不能使用相同的代码把所有类型的数据都处理掉,所以我们就需要分别处理了。然后就对println方法进行了重载,每种重载后的方法都是专门对其中一种数据类型进行处理的。

对于调用者来说,我们只需调用这个println,然后把我们手上的数据传给他,之后就是编译器或者JVM,根据这个方法的名字,以及我们所传的参数类型,自动的去查找定位这个要的调用的方法是重载的哪一个,找到之后就可以执行了。因为重载方法中包含我们所有的数据类型,所以调用者并不需要知道我们确定调用的是哪一个方法,我们只是把数据传给这个方法。

总结:一个方法,只能处理一种数据类型,但是java中有很多种数据类型,如果我们想让这个方法去处理不同的数据类型,那么方法的重载就是一个不错的选择。

实例:
public class OverLoadTest{
​
    public static void main(String[] args){
        OverLoadTest t = new OverLoadTest();
        t.test(1,1);
    }
​
    public void test(int a,long b){
        System.out.println("第一个方法被调用");
    }   
​
    public void test(long a,int b){
        System.out.println("第二个方法被调用");
    }
​
​
    public void test(){
​
    }
​
    public void test(int a){
​
    }
​
    public void test(String s){
​
    }
​
    public void test(int a,String s){
​
    }
​
    public void test(String s,int a){
​
    }
​
    private static int test()throws RuntimeException{
        return 0;
    }
​
​
}
​

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,异常处理是非常重要的一部分。当程序运行时如果出现错误,如果没有异常处理,程序就会崩溃。为了避免这种情况,Python提供了异常处理机制。 在Python中,异常处理语句使用 `try` 和 `except` 关键字来实现。`try` 语句块中包含可能会发生异常的代码,如果这段代码出现了异常,则会跳转到 `except` 语句块中执行异常处理代码。 下面是一个简单的例子: ```python try: num = int(input("请输入一个整数:")) print(10/num) except ZeroDivisionError: print("除数不能为0") except ValueError: print("输入的不是整数") ``` 在上面的代码中,我们尝试将用户输入的字符串转换为整数,并将其用作除数计算 10/num。如果用户输入的是 0,则会触发 ZeroDivisionError 异常。如果用户输入的不是整数,则会触发 ValueError 异常。如果发生异常,则会跳转到对应的 except 语句块中执行处理代码。 除了可以指定具体的异常类型,也可以使用 `except Exception` 来捕获所有异常。例如: ```python try: num = int(input("请输入一个整数:")) print(10/num) except Exception as e: print("发生异常:", e) ``` 在上面的代码中,如果发生任何异常,都会跳转到 `except` 语句块中执行处理代码,并将异常信息打印出来。 除了 `try` 和 `except`,还有 `finally` 关键字,它指定的代码块无论是否发生异常都会执行。例如: ```python try: num = int(input("请输入一个整数:")) print(10/num) except Exception as e: print("发生异常:", e) finally: print("程序执行完毕") ``` 在上面的代码中,无论是否发生异常,都会执行 `finally` 中的代码,即输出“程序执行完毕”。 总之,在Python中,异常处理是非常重要的一部分,它可以有效避免程序崩溃,提高程序的健壮性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值