Java知识点整理(类,对象,重载,封装)

1.类:

首先类是什么,我们假设有一台汽车,我们可以用原生类型int或者float来描述它的高度,长度,重量等,但是汽车的性能,汽车的安全性,我们用原生类型int或者float是无法描述的,所以我们选择创建一个新的类型来描述它的安全性或者它的性能,我们在定义类的时候,需要用到一个关键字class,每写一个class都是在定义一个新的数据类型,这个新的数据类型就叫做类(Type)

在类中我们要提供事物的共性,这些共性分为两类

共性特征(属性)

共性行为(方法)

2.设计类:

假如我们要设计学生这个类,首先我们要知道属性是什么,比如这个学生的身高,体重,年龄,性别这些就是属性,那行为呢,学生的学习,学生的吃饭,学生的睡觉就是行为,这里我们刚开始可以先画图,画出类的结构图(UML),可以在processon里面有固定的模板画

里面的Student就是类名,stuId就是类的属性,learn就是类的方法

3.创建对象:

比如我们之前用过的Scanner scan = new Scanner(System.in);就是一个创建对象非常好的例子,可以把他看成 int i = 0; int就是Scanner(数据类型), i就是scan(引用变量), new Scanner(System.in)就是一个对象.

4.对象的内存管理:

对于内存,个人浅薄理解只需要知道三个地方,虚拟机栈(Stark),堆(heap),方法区.

所以我一般会把内存简化成三篇区域:栈,堆,代码区

储存结构大小 堆>栈>寄存器   存储结构执行速度 寄存器>栈>堆

 

栈里面只有2类内容

  • 原生类型 : 直接保存类型的值
  • 引用变量(就是我们前面提到过的scan) : 保存堆中对象的地址

堆中有两个内容

  • 所有new出来的
  • 常量池

我们所有对对象的操作都是通过引用变量来完成的!~>

5.构造方法的定义:

每个类中都默认拥有一个隐藏的方法,这个方法没有返回值,且方法名和类名一致。具备这两点特性的方法被叫做构造方法。每个类默认都拥有一个无参且隐藏的构造方法,比如你创造了一个Teacher的方法,但是你的代码块里什么都不写,他也还是可以被调用,这是为什么呢,因为构造器!!!!!!!!构造器的作用:

  • 用于给成员变量赋值(成员变量是定义在方法外的变量)
  • 没有参数传入,那就赋予类型的默认值(无参构造方法)
  • 有参数传入,赋予传入的值
  • 和new 连体,来构造对象!

6.方法重载

重载就是在同一个类中,有多个方法,方法名称一致,但是参数列表不同,就叫做方法的重载

其中有一个重点就是就近原则!!!!

比如你创造了一个student的方法,之后在同一个类中又创建了一个student的方法,但是参数列表不同,这就是重载,但是某些参数是相同的,如果我调用这个方法,返回的值要确定是你新创建的方法的值怎么办,用到关键字this,因为Java的解释器在寻找变量的时候就遵守就近原则

public class Student {
    public int stuId;
    public int stuAge;
    public String stuGender;
    public String stuName;
    public Student(){
        System.out.println("this is student constructor");
    }
    
    public Student(int stuId,int stuAge,String stuName,String stuGender){
      
        this.stuId = stuId;
        this.stuAge = stuAge;
        this.stuName = stuName;
        this.stuGender = stuGender;
        System.out.println("this is student constructor");
    }

重载有几种方式呢,有以下几种,参数数量的改变,参数类型的改变,(参数数量>=2 && 两种类型不一致时),改变顺序也可以重载,注意前提!!!

public class A {
    public void method() {
        System.out.println("this is method");
    }
    //-- 和上面相比,参数数量改变
    public void method(int i) {
        System.out.println("this is method");
    }
    //-- 变量名不影响重载,只受数量和类型的限制
    //public void method(int j){
    //    System.out.println("this is method");
    //}
    //-- 和第8行相比 参数数量改变
    public void method(int i, int j) {
        System.out.println("this is method");
    }
    //-- 顺序颠倒,类型一致,本质就是名字改变,不影响重载
    //public void method(int j,int i){
    //   System.out.println("this is method");
    //}
    //-- 和上面相比是参数类型改变
    public void method(int i, double j) {
        System.out.println("this is method");
    }
    //-- 和上面相比 参数数量>=2,且类型不一致,顺序发生改变,
    public void method(double j, int i) {
        System.out.println("this is method");
    }
}

重载在编译时就可以明确方法体,所以也被叫做静态多态。

7.封装:

Java针对类的访问做了权限控制,通过4个访问修饰符来实现

  • public
  • protected
  • private
  • 默认(什么都不写,也被佳作friendly或者default)

 

Student中有四个成员变量,都是被public修饰的,可以理解为在任何一个地方都可以被访问。那这样对于数据而言是不安全的。所以我们希望降低不安全因素。让访问在我们可控制的范围内进行,类似于银行卡密码只有你知道.

Java中进行封装的步骤

  • 将访问修饰符降低到private
  • 数据的操作说到底无非就是读和写,针对数据提供读和写的方法。大家一般习惯性用如下两个方法
    • get 用于取值 代表读
    • set 用于赋值 代表写
    •  private int stuId;
          //-- get读取  把数据从内部向外部传递。能够做到这一点的 只有return
          public  int getStuId(){
              return stuId;
          }
          //-- set赋值 把数据从外部向内部传递。 一个方法接收外部传入数据的地方叫做参数
          public void setStuId(int stuId){
              //-- 利用条件对传进来的数据做控制!!
              if (stuId < 0) {
                  System.out.println("stuId不合法");
                  return;
              }
              this.stuId = stuId;
          }

      封装就是属性私有化,简单来说我让你看到什么,你就只能看到什么

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值