怎么设自己的网站,网站建设 数据库购买,微网站建设多少钱,网站备案公共查询目录
一、对象的构造及初始化 1.1. 就地初始化 1.2. 默认初始化
1.3. 构造方法
二、封装
2.1. 封装的概念
2.2. 访问限定符
2.3. 封装扩展之包
三、static成员
3.1. 再谈学生类
3.2. static修饰成员变量 一、对象的构造及初始化 1.1. 就地初始化 在声明成员变…目录
一、对象的构造及初始化 1.1. 就地初始化 1.2. 默认初始化
1.3. 构造方法
二、封装
2.1. 封装的概念
2.2. 访问限定符
2.3. 封装扩展之包
三、static成员
3.1. 再谈学生类
3.2. static修饰成员变量 一、对象的构造及初始化 1.1. 就地初始化 在声明成员变量时就直接给出了初始值如下面的代码
public int year2005;
public int month3;
public int day13; 1.2. 默认初始化
当我们定义成员变量时不会给成员变量初始化那么成员变量就会有一个默认初始化的值如year0month0day0。
1.3. 构造方法 接上一期什么是构造方法 方法名和类名一样没有返回值如下面的代码。构造方法怎么被调用呢在Date datenew Date()时被调用。在创建对象时由编译器自动调用一个不带参数的构造方法只不过构造方法什么都不做并且 在整个对象的生命周期内只调用一次。一旦用户定义编译器则不再生成。此外还可以提供带多个参数的构造方法需要结合上一期的代码才能看懂。
public Date(){}
public Date(){this.yearyear;this.monthmonth;this.dayday;
}public static void main(String[] args){Date datenew Date(2024,10,26);date.PrintDate(); 通过上面的代码我们可以看到构造方法可以初始化我们的成员变量。
二、封装
2.1. 封装的概念 不封装可能会很难堪。数据时公开的会被全世界的人看到甚至可以被改动。我们如何将程序的从不良数据改成可以保护数据且让你还能修改数据的方式很简单呢就得将数据隐藏。 封装将数据和操作数据的方法进行有机结合隐藏对象的属性和实现细节仅对外公开接口来和对象进行 交互。 我们可以使用一些访问限定符来进行封装比如private。
private String title;
private String genre;
private int rating; 那既然我们进行了限定访问还有方法对title、genre、rating进行访问呢代码如下
public void setTitle(String title){this.tiltletitle;
}public void setGenre(String genre){this.genregenre;
}
one.Settitle();
one.setGenre();
现在成员变更少那如果成员变量多呢我们可以用编译器自己生成如下图所示右键点击generate在点击Getter and Setter就会生成如下代码 private String title;public String getGenre() {return genre;}public void setGenre(String genre) {this.genre genre;}private String genre;public Movie(String title) {this.title title;}public int getRating() {return rating;}private int rating;
我们可以选择getter或setter或getter and setter
2.2. 访问限定符 Java中主要通过类和访问权限来实现封装类可以将数据以及封装数据的方法结合在一起更符合人类对事物的认 知而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符 private、default、protected、public。
2.3. 封装扩展之包
1包的概念 在面向对象体系中提出了一个软件包的概念即为了更好的管理类把多个类收集在一起成为一组称为软件包。有点类似于目录。比如为了更好的管理电脑中的歌曲一种好的方式就是将相同属性的歌曲放在相同文件 下也可以对某个文件夹下的音乐进行更详细的分类。所以包的出现就是为了更好地管理java文件。 比如我们要进行输入操作时使用Scanner就需要导入java.util.Scanner包点号前面是名后面是类名。我们可以在左侧去寻找这个包因为博主的电脑里面装了JDK17所以就会显示出 在我们的C盘里面这个路径下可以找到所有java的包与IDEA上面的一致。 2导入包中的类
import java.sql.*;//并不会把所有类进行加载用谁取谁但不是一劳永逸
package java.util;//声明一个包。当前类的第一行声明一下该类在那个包 这段代码会报错为什么呢第一个包有星号第二个包有Date下面的date会懵了不知道该指向哪个了。 此时就和定义顺序有关
import java.util.*;
import java.sql.Date;Date date new Date; 这样就不会因为包的顺序而出错了
java.util.Date date new java.util.Date();java.sql.Date date1 new java.sql.Date(2015,5,10);
3自定义的包 基本规则在文件的最上方加上一个 package 语句指定该代码在哪个包中包名要和代码路径相匹配如果一个类没有 package 语句, 则该类被放到一个默认包中。
操作步骤 右击scr点击new再点package 4包的访问控制权限
package com.HeBei.www;public class Dog {int age;String breed;String name;public void Bark(){System.out.println(name汪汪叫);}
}
package com.HeBei.www;public class Test {public static void main(String[] args) {Dog dognew Dog();System.out.println(dog.name);}
}
package com.university.www;import com.HeBei.www.Dog;public class Main {public static void main(String[] args) {Dog dog new Dog();dog.name}
} 我们来看第一段代码在com.HeBei.www这个包里面第二段代码与第一段代码同包不同类可以正常访问Dog的成员变量但第三段代码与第一段代码不同包就不能访问。
5常见的包
下面给大家看一下比较常见的包
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编程开发包。
三、static成员
3.1. 再谈学生类
public class Student {int age;String name;String Class;public Student(int age,String name,String Class){this.age age;this.name name;this.ClassClass;}public static void doClass(){System.out.println();}
}
public class Test {public static void main(String[] args) {Student stu1new Student(17,Alan,101);Student stu2new Student(18,Henry,101);Student stu3new Student(16,Paul,101);}
} 三个stu都隶属于同一个Class且都放在同一对象里此时就需要在栈上开辟三块内存空间。那如果我们把Class也包含一份就需要定义一个static就不会看到属性里有Class同时这个成员变量也不再属于对象了而这个Class存储在了方法区。 System.out.println(stu1.Class);
System.out.println(stu2.Class);
System.out.println(stu3.Class); 这样我们就把Class放在同一个静态成员变量或者类变量里面但这种访问不合理。
3.2. static修饰成员变量 static修饰的成员变量称为静态成员变量静态成员变量最大的特性不属于某个具体的对象是所有对象所共享的。 静态成员变量属性 1. 不属于某个具体的对象是类的属性所有对象共享的不存储在某个对象的空间中 2. 既可以通过对象访问也可以通过类名访问但一般更推荐使用类名访问 3. 类变量存储在方法区当中 4. 生命周期伴随类的一生(即随类的加载而创建随类的卸载而销毁)