java-12 封装,this,构造方法,四种访问权限,super

封装,this,构造方法,四种访问权限,super

  • java封装
    • 封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
    • 在java中用d代码实现,也就是把成员变量私有化,使用公开的方法去访问(在方法中我们可以添加一些限制),从而可提高数据的安全性,有效性(getXXX访问,setXXX改变)

  • this
    • this关键字指向的是当前对象的引用(简单讲就是谁指它就指向谁),this() 代表的是当前类的构造方法里面可以写参数也可以不写(这就看自己的构造方法了)
    • this 的作用 通常用于解决成员变量与局部变量重名的问题

  • 构造方法
    • 构造方法用于创建实例化对象
    • 构造方法中可拥 0,1,2,3…个参数,当然构造方法也可以有多个,只要参数类型不同就好
    • java中所有的类都是继承的object类(在object类中有一个无参构造方法),所以当我们创建一个类之后,就算什么都不写也是可以调用无参构造方法的。
    • 语法:public 类名(){} //无参构造方法

  • java中的四种访问修饰符
    • 访问修饰符可修饰类 ,成员变量,方法
本类 同包 子类 其他包
public
protect ×
default × ×
private × × ×
  • public: java中访问权限最宽的修饰符(公有的),被它修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。
  • private: java中权限最小的修饰符(私有的)。被它修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
  • protect: 介于public 和 private 之间的一种访问修饰符(保护形)。被它修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
  • default:即不加任何访问修饰符(默认访问模式)。该模式下,只允许在同一个包中进行访问。

  • super
    • super 与 this 非常相似 this 是代表的是本类,而super代表的是父类
    • super可以点出父类非私有的方法与属性
    • super()代表的是父类的无参构造方法 ,当然里面也能写参数(调用的就是父类的有参构造),注意super() 只能放在 子类的构造方法中的第一行,不然就会报语法错误


接下来就是我们的代码实现了


public class Teacher{   // 老师类
	private  String name;
	private  int  age;
	private String  major;
	//  上面的三个属性都是私有的(外部是不能访问的,现在我们可以写几个公开的方法来访问)

	// 这个get方法用于 返回 这个对象的属性
	public String getName(){
		return this.name;    
		 //this.name  指向的当前的引用对象(这里this不写也没关系,因为我们上面讲了 this是用来解决属性与
		 //局部变量重名的问题,这里没有重名所以不用也是可以的)
	}

	// 这个set方法用于 给我们的name属性赋值
	public void setName(String name){
		
		// 当然我们也能在这里面添加一点逻辑判断,只有符合了才给我们的属性赋值,
		//这样就可以确保我们属性数值的有效性
		this.name = name;
		//这里就需要使用到 this 了因为我们的属性已经和这方法的参数重名了 this.name 代表的是我们的属性 
		//name 在这方法里面代表的是这个方法的参数
	}
	
	public  int getAge(){
		return age;
	}

	public void setAge(int age){
		this.age = age;
	}

	public  int getMajor(){
		return major;
	}

	public void setMajor(int major){
		this.major = major;
	}
}

以上的使用公开方法访问私有的属性 就是我们的属性封装了,以及this的使用

public class Teacher{   // 老师类
	private  String name;
	private  int  age;
	private String  major;
	//  构造方法的访问修饰符通常都是  public 因为我们的对象本来就是给别人访问的,如果你写个私有的,,,
	//额那么是不是就没意义了
	public  Teacher(){  
		
	}
	public Teacher(String name , int age , major){
		this.name = name;
		this.age = age;
		this.major = major;
	}

}


注意当我们自己写了一个构造方法后 原先的无参构造方法就没用了
因为在我们java中 所有的类是继承与object类的 当我们的子类重写了父类的方法,那么父类原先的方法就会被子类的给取代

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章