JavaSE学习之--类和对象(二)

简介: JavaSE学习之--类和对象(二)

JavaSE学习之--类和对象(一)+https://developer.aliyun.com/article/1413482

3.默认初始化:

 上文已经提到过,成员变量不初始化也可以以通过编译,并有默认值,主要是因为编译器提供了一个默认的构造方法,在对象创建时就会被调用。实际上,通过new关键字来实例化对象要做的工作很多!

4.就地初始化(在创建成员变量时就直接赋值)

// 就地初始化(写死了)
    public String name = "绿子";
    public String sex = "girl";
    public int age = 18;

封装:

1.引入:

       我们见到的电脑主机往往都被一层黑壳包住,我们只需要通过主机上的接口来实现和计算机之间的交互。但实际上,主机内部有着复杂的电子元件,来实现特定的功能!但我们并不关心他内部的属性,以及如何运转的,我们只需要通过接口来实现交互,这种将属性和内部方法(实现细节)隐藏的做法就是封装!

2.访问修饰限定符:

在计算机中,通过类来存储属性和方法!那如何实现封装呢?通过访问修饰限定符来实现!

public:公开,可跨包,跨类

protected: 不能跨包

default:默认权限,不可跨包

private:只能在同一包同一类使用

public class Stu2 {
    // 访问修饰限定符
    private int age;
    String sex;
    public String name;
    public Stu2(int age,String sex,String name) {
        this.age = age;
        this.name = name;
        this.sex = sex;
    }
    public void stuRun() {
        System.out.println(this.name+"i am running!");
    }
    public void stuSleep() {
        System.out.println(this.name + "i am sleeping!");
    }
    public static void main2(String[] args) {
        Stu2 stu = new Stu2(14,"男","边度");
        System.out.println(stu.age);// private  只能在Stu2类中访问
        System.out.println(stu.sex);// default  默认权限,可以在当前包中任意类访问
        System.out.println(stu.name);// public  公开权限,可跨包访问
        stu.stuRun();
        stu.stuSleep();
    }
}

private:无法跨类访问

一般情况下,成员变量设置为private,方法设置为public

       那如果我想在类外使用private属性的成员变量该怎么办呢?答案是:使用set和get方法(方法被设置为公开的,无法访问成员变量,但可以访问方法,通过方法来访问成员变量)

3.set和get方法的创建

快速创建set和get方法的步骤:

包:

引入:

       上文提到default无法跨包访问,那什么是包呢?包就是类的集合,是用来管理类的!可以把包理解为一个大的文件夹,里面存放的是各种类,通过包可以很好的组织,管理类!比如当你不想当前包的类被其他包访问,就可以修饰为default;包还有一个重要的作用,在同一个工程内,可以出现两个相同名字的类,只要处于不同的包中。(在两个文件夹内都有“周杰伦歌曲”这个类,电脑也不会报错)

1.导入包中的类

其实Java中提供了很多的现成的类供我们使用,比如常见的util类,Arrays类等等;在使用这些类时,要进行相应的导入,导入是通过import

如果需要使用 java.util 中的其他类, 可以使用 import java.util.*

import java.util.*;
import java.sql.*;
Date date = new Date();// err
// 如果存在访问冲突,要写具体,是哪个包中的类
java.util.Date date = new java.util.Date();

2.使用static导入静态包

import static java.lang.Math.*;
   public static void main(String[] args) {
        double x= 2.0;
        double y = 3.0;
        System.out.println((Math.pow(x, 2) + Math.pow(y, 2)));// 13.0
        // 添加static关键字,可以直接使用方法名,不需要再添加Math了,这样写更方便,但不建议用
        System.out.println(pow(x, 2) + pow(y, 2));
    }

注意:

import和C语言中的include不一样,include是导入文件,import是导入相应的类,使用相应的方法!!!同时,include包括所有函数的具体实现方法,Import只是导入接口的声明,并不包括具体的实现细节;include加头文件是在预处理阶段就进行的,而import是在编译阶段进行

3.创建自定义包:

4.通过自定义包再次深入理解访问修饰限定符的权限:

常见的包:

1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。

2. java.lang.reflect:java 反射编程包;

3. java.net:进行网络编程开发包。

4. java.sql:进行数据库开发的支持包。

5. java.util:是java提供的工具程序包。(集合类等) 非常重要

6. java.io:I/O编程开发包。

在编译器中快速查看常见包:双击shift

静态成员(类成员)

1.定义:

       所有对象共享的成员变量就叫做静态成员变量!通过static关键字修饰。静态成员变量不属于对象,而是属于类!推荐通过类来访问静态成员变量!

class Stu{
    // 实例成员变量-->每个对象都包含一份
    int age;
    String name;
    String sex;
    // 假如三位学生都是一个班的,现在要创建一个classroom的成员变量
    // 由于他们都是一个班的,可以说他们共享一个“classroom”
    // 共享的成员变量就是静态成员变量
    public static String classroom = "110";
    public Stu(int age, String name, String sex) {
        this.age = age;
        this.name = name;
        this.sex = sex;
    }
}
public class Test {
    public static void main(String[] args) {
        Stu stu1 = new Stu(15,"biandu","boy");
        Stu stu2 = new Stu(18,"绿子","girl");
        Stu stu3 = new Stu(19,"栀子","boy");
        // 直接通过类名访问(推荐)
        System.out.println(Stu.classroom);
        // 通过对象访问(不推荐)
        System.out.println(stu1.classroom);
        System.out.println(stu2.classroom);
        System.out.println(stu3.classroom);
    }

2.类变量不属于对象,继而他并不存在于堆区,而是存在于方法区!

JavaSE学习之--类和对象(三)+https://developer.aliyun.com/article/1413486

目录
相关文章
|
Java 编译器
【JavaSE】基础笔记 - 类和对象(下)
【JavaSE】基础笔记 - 类和对象(下)
70 0
|
存储 Java
【JavaSE】基础笔记 - 类和对象(上)
【JavaSE】基础笔记 - 类和对象(上)
74 0
|
存储 Java 编译器
【javaSE】 类和对象详解(下)
【javaSE】 类和对象详解(下)
|
5月前
|
安全 Java C语言
JavaSE基础:面向对象
JavaSE基础:面向对象
|
7月前
|
存储 SQL Java
【JavaSE语法】类和对象(二)
本文主要介绍了面向对象的三大特点之一封装,并引入了包的概念;还介绍了static修饰类的成员(变量+方法),最突出的特点就是static修饰的属于类,而不属于某个对象;最后介绍了四种代码块
53 7
|
7月前
|
Java 编译器
JavaSE基础 --- 类与对象
JavaSE基础 --- 类与对象
67 0
|
7月前
|
Java 编译器
JavaSE学习之--类和对象(三)
JavaSE学习之--类和对象(三)
47 0
|
7月前
|
存储 Java 编译器
JavaSE学习之--类和对象(一)
JavaSE学习之--类和对象(一)
55 0
|
存储 Java 编译器
【JavaSE语法】类和对象(一)
【JavaSE语法】类和对象(一)
48 0
|
存储 安全 Java
类和对象【JavaSE】
类和对象【JavaSE】
80 0