java是封装的类_Java 封装与类

封装与类

面向对象的程序设计将数据和对数据的操作行为封装在一起,作为一个相互依存、不可分割的整体——类。

类中的大多数数据只能为本类的行为处理,类会提供公开的外部接口和外界进行通信。

面向对象的显著特点:封装性、继承性、多态性。

封装隐藏了内部实现,继承实现了现有代码的复用,多态在代码复用的基础上可以改写对象的行为。

封装:

(1)把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位。

(2)实现“信息隐蔽”,尽可能隐藏对象的内部细节,对外界形成一个边界,只保留有限的接口和外界进行联系。

类:

1. 定义:[类修饰符] class { }

(1)类的访问控制符:public, protected, private, package(默认)

(2)数据成员/成员变量

(3)数据成员的 set 和 get 方法:通常会将数据成员私有化(声明数据成员为 private),只允许在类的内部直接存取,外界则使用类声明的两个公开的接口(set 和 get 方法)进行访问

package Blog;

public class GanGan {

// 成员变量

private String name;

// 成员变量的 set 和 get 方法

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

(4)构造方法:用于为新建的对象分配存储空间和对数据成员进行初始化,它只能再创建对象是用 new 命令调用

*  构造方法通常被重载以提供无参、有参等多种初始化的形式,程序运行时,编译系统会根据创建的对象的参数情况匹配相应的构造方法。

*  如果一个类中为定义构造方法,编译系统会为之提供一个缺省的无参、方法体为空的构造方法

public GanGan() {

}

*  但是,一旦类中自行定义了其他构造方法后,编译系统将不再提供默认的无参构造方法。但无论怎样,都需要在类中自定义一个无参的构造方法

*  如果类中包含了多个重载的构造方法,而这些重载方法之间存在完全包含的关系,那么可以用一个构造方法去调用另一个构造方法

package Blog;

public class GanGan {

// 成员变量

private String name;

private int age;

// 空构造

public GanGan() {

super();

}

// 有参构造,重载

public GanGan(String name) {

this.name = name;

}

public GanGan(String name, int age) {

// 使用 this 调用自己的其它构造方法

// this 调用只能再构造方法中使用,且必须是构造方法执行体的第一句

this(name);

this.age = age;

}

// 成员变量的 set 和 get 方法

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

对象和引用

1. 创建后的对象存在与堆内存中,通过它的引用变量才能才能访问到,引用变量位于栈内存中。

(Java 中的 String 类型变量为引用类型,其默认的初值为 null)

2. 引用变量只存储了对象的地址,与对象建立了指向的关系

使用对象的成员:引用变量 . 成员变量,引用变量 . 成员方法

关于 static

1. 对于 static 成员,建议使用类名 . 形式进行存取(static成员通常是为类的对象所共享的数据)

package Blog;

public class StaticClass {

// 成员变量

public static String nationality = "中国";

}

package Blog;

public class StaticDemo {

public static void main(String[] args) {

System.out.println("干干的国籍:" + StaticClass.nationality);

}

}

运行成果:

dfed7be3f80f3ee8bb700d530af92516.png

2. static 方法只能访问 static 成员;非 static 方法既可以访问 static 成员,又可以访问非 static 成员

3. static 代码块:如果在加载类时希望先进行一些特殊的初始化,可以使用 static 定义一个代码块,将期望最早执行的初始化任务写在代码块中。(类在家在时,会预先执行 static 代码块中的代码,且只执行一次)

package Blog;

public class StaticBlockTest {

// 静态代码块

static {

System.out.println("static 代码区,类正在被加载......,我只执行一次");

}

// 构造方法

public StaticBlockTest() {

System.out.println("在创建类的对象......");

}

}

package Blog;

public class StaticBlockDemo {

public static void main(String[] args) {

new StaticBlockTest();

new StaticBlockTest();

}

}

运行结果:

8c04bea806e68655308e55813c4117ad.png

标签:封装,name,构造方法,成员,static,Java,public,String

来源: https://www.cnblogs.com/ZZG-GANGAN/p/13917188.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值