美文网首页
[Java]开发安卓,你得掌握的Java知识4——“类” 其之二

[Java]开发安卓,你得掌握的Java知识4——“类” 其之二

作者: 入梦瞌睡 | 来源:发表于2019-08-08 00:56 被阅读0次

目录

1.本文主要内容简介

2.“类”的知识补充

3.总结

0.前言

1.本文主要内容简介

  • 类的基础知识补充

  • 对应知识的相关细节

  • 实际例子

2.“类”的基础知识补充

[Java]开发安卓,你得掌握的Java知识3》中,
讲解了“类”的基础概念、属性、方法、对象等概念

  • 本文我们则补充讲解:setter/getter、静态方法、单例设计模式、重载

什么是“setter/getter”

  • 当类中的属性被设置为私有的(private)时候,外部无法随便访>问该变量

  • 此时,如果还是想要在外部对对象的属性进行访问,使用setter/getter就是方法之一

  • setter就是一个接收器,如果拿人作为例子,
    setter相当于是手。
    别人给我们食物,一般不会也没办法给到我们的嘴里
    因为我们的嘴是私有的
    我们会用手去接收别人给过来的食物,然后放到嘴里,这就类似于setter的功能

public Person{
    public String name;
    private int age;
    private int id;
}

如上代码,age和id是不能通过对象直接在外部访问的

Person p = new Person();
p.name = "小王"; //可以
p.age = 20; //不行,私有变量不能直接外部访问
p.id = 001;//不行,私有变量不能直接外部访问

不能直接外部访问,就得考虑使用setter/getter:

public Person{
    public String name;
    private int age;
    private int id;
    
   public void setAge(int age){
         this.age = age;
    }
   public int getAge(){
        return this.age;
    }

   public void setId(int id){
         this.id = id;
    }

   public int getId(){
        return this.id;
    }
}

如此就可以在外部调用对应的函数来赋值、获取值:

Person p =new Person();
p.setAge(20);
System.out.println(p.getAge());//输出为20

什么是静态属性、方法

在上一篇文章中,我们已经大致讲过了静态方法的定义与使用
这里我们再次统一讲解一下

  • (1)从外观角度来说,
    使用static修饰的属性变量、方法就是静态属性、静态方法
  • (2)从使用的角度来说,
    静态属性、方法是可以直接使用类名.属性名类名.方法的形式来调用的
  • (3)从内存的角度来说,
    静态的属性、方法会在对象创建之前优先加载

需要注意:

  • 什么时候使用静态方法?
    一般是不需要对象去完成的方法,会写成静态方法
    (不需要对象一般情况意味着不需要实例化对象,使用对象的属性来记录数据)

  • 什么时候使用静态属性?
    当需要定义一个不会再改变的常量的时候,会写成静态属性
    (静态的属性只能赋值一次)
class Subject{
     public static String[] name= {"计算机","数学","英语"};
}
class Person{
     public static void sayHello(){
        System.out.println("hello");
    }
}

什么是单例设计模式

  • 在一些程序中,会使用到类似管理器的东西,这种管理器如果创建出一个对象,会出现:无法保证程序的任意地方都能访问到该对象的问题(也不能重新创建一个对象)

为了避免这个问题,同时还要防止全局变量的产生,就需要用到单例设计模式

public PersonManager{
   //1.创建一个静态的变量
    public static PersonManager manaer = new PersonManager();

   //2.构造函数私有化
    private PersonManager(){}
    public void showPerson(){
          //具体函数定义
    }
}
public staitc void main(String[] args){
    PersonManager.manager.showPerson();
}
  • 单例设计模式的具体实现步骤就是:
    (1)将构造方法私有化
    (2)创建一个静态的变量
  • 以后要调用这个类的函数,则不要去实例化创建对象,而是用:
    类名.manager.方法()的格式
    (manager可以改,看你具体定义的时候写的是什么)

这样就可以避免类的对象因为作用域问题,
而在一些地方无法被调用的尴尬问题

什么是重载

所谓重载,简单来说,就是当函数a已经存在时,通过改变函数a的返回值、参数个数、参数类型中的一个或多个,而产生的同名但是返回值、参数、函数具体内容有一些不同的函数b

public void showText(String text){
      System.out.println(text);
}

public void showText(int num){
      System.out.println("num ="+num);
}

public int showText(int num){
      if(num==1){
          return 1;
      }else{
           System.out.println("num ="+num);
          return 0;
      }
     
}
  • 同样是叫做showText,但是这三个函数却不尽相同,这就是函数的重载。
  • 在调用的时候,根据返回值、参数的不同,会自动判断使用哪个函数

3.总结

(1)基本上将类的知识讲完了(还有一些日后再补充),有了这些知识基本上就可以正式去写一些Java代码了
(2)这里没有贴出实际例子,知识给了一些临时例子的理由是,面向对象的思维使得程序中各个部分都尽可能地形成了一个整体,零散的代码其实意义不大
(3)如果说C语言写代码时,要将问题尽可能往程序上靠拢,让问题服务于代码,那么Java可以说是反过来,让程序尽可能贴近于现实,将一切都尽可能地形成一个整体(封装),而不是只是在堆砌函数
(4)因此在日后,当某个程序写的比较完整后,才会考虑将代码贴出并且进行详细分析

相关文章

网友评论

      本文标题:[Java]开发安卓,你得掌握的Java知识4——“类” 其之二

      本文链接:https://www.haomeiwen.com/subject/gpqzdctx.html