Javase学习文档------面象对象再探

再续前缘面向对象

书接上回构造器
在Java中,可以通过在空参构造方法中使用 this() 关键字来调用类中其它的构造方法。
使用 this() 关键字来调用其它构造方法时,需要注意以下几点:

1.this() 必须是构造方法的第一条语句;
2.一个构造方法内最多只能调用一次 this() 方法;
3.在调用 this() 方法时,参数列表必须满足所调用的构造方法的要求,即形参类型和数量要与被调用的构造方法一致;
4.如果没有手动定义任何构造方法,则系统会自动生成一个无参构造方法,即使不显式地书写,Java也会为我们提供一个默认的空参构造方法。

static关键字

在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量.
	它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,
	对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
	可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”
	static变量置于方法区中!
用static声明的方法为静态方法
	不需要对象,就可以调用(类名.方法名)
	在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可直接访问非static的成员。
	但是可以通过对象使用。
	静态方法不能以任何方式引用this和super关键字

静态

block块

静态代码块
	声明位置    	类中,方法外 
	
	作用   	    整个类进行某些初始化操作(静态属性赋值...)
	
	执行时机    	类第一次加载时,只执行一次,如果多个静态块,从上倒下一次执行
	
构造代码块 
	声明位置     类中,方法外
		
	作用        构造代码块是为对象初始化操作(为静态或非静态成员属性赋值...)
		
	执行时机	    创建对象时,执行构造器代码之前执行,如有多个,从上倒下一次执
	行
普通语句块  	    
	声明位置     方法中 
	
	作用        声明一些临时变量等..
		
	执行时机    跟随方法执行
		
同步代码块(未完待续~)
	声明位置
	作用
	执行时机
注意
	类第一次被载入时先执行static代码块;
	类多次载入时,static代码块只执行一次;
	static块经常用来进行static变量的初始化。是在类初始化时执行,不是在创建对象时执行。
	静态初始化块中不能访问非static成员。
	构造块被被编译到将要执行的构造器代码之前执行
	区别
		静态块,仅在类的第一次使用时加载。
		构造块,先于构造器执行,每创建一个对象执行一次

private私有化

private是一种访问修饰符,用于限制类的成员变量和成员方法的访问范围。
private修饰的成员只能在定义它所属的类内部访问,其他类无法直接访问。

1  总之,属性私有化是Java面向对象编程中的重要概念,它可以有效的保护对象数据的安全性,同时也可以提高程序的可维护性和易用性。
2  但需要注意的是,过度的属性私有化会增加程序的复杂性,因此在进行设计时应该根据实际需求来灵活运用。
3  使用private修饰成员变量可以增加程序的安全性和稳定性,避免了其他类直接修改它,也可以实现对成员变量的封装。
封装是面向对象编程中的一个重要概念,它指的是隐藏类的内部细节,仅对外部提供有限的接口,从而使得程序更加安全和可靠。
	例如,我们定义一个Person类,其中包括一个private的age属性,以及公开的setAge和getAge方法:
public class Person {
    private int age;
    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
}

上述代码中,age属性被设置为private,只有Person类内部才能直接访问,其他类无法直接访问。同时,Person类提供了公开的setAge和getAge方法,用于设置和获取age属性的值。这样设计的好处是,外界程序无法直接修改age属性的值,必须通过Person类提供的方法来进行操作。这不仅提高了程序的安全性,还使得程序更加易于维护和调试。

封装

封装是Java中的一个面向对象编程的原则,指将类的内部数据和方法保护起来,只对外界暴露一些必要的接口。
问控制
通过private、protected、public等访问控制符来限制属性和方法的访问权限,从而防止程序对类的内部实现细节进行修改,确保数据的安全性和可靠性。

	public class Person {
	    private String name;
	    protected int age;
	    public void setName(String name) {
	        this.name = name;
	    }
	    public String getName() {
	        return name;
	    }
	 }
  1. name属性使用了private访问控制符,只有Person类内部才能直接访问该属性,其他类无法访问。age属性使用了protected访问控制符,可以被该类的子类直接访问,但其他类无法直接访问。
  2. 隐藏实现细节
    封装还可以隐藏类的实现细节,使得类的内部实现细节对外部不可见,对外部提供的方法只需要传入必要的参数并返回相应的结果即可。通过这种方式,可以有效的防止外部程序对类的内部进行不必要的干涉和修改,提高了程序的可维护性。
public class Person {
    private String name;
    private int age;
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setAge(int age) {
        if (age >= 0) {
            this.age = age;
        } else {
            System.out.println("年龄不能为负数!");
        }
    }
    public int getAge() {
        return age;
    }
  }

通过private、protected、public等访问控制符来限制属性和方法的访问权限,从而防止程序对类的内部实现细节进行修改,确保数据的安全性和可靠性。 隐藏内部的实现细节,对外提供一对公共的访问方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值