——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一封装
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
常用方式:将成员变量私有化,对外提供对应的set ,get方法对其进行访问。 细节:set方法与get方法的命名形式是固定的!均为 set/get + 成员变量名(首字母由变量时的小写变为大写)
2.封装的好处:
1)隐藏实现细节,提供公共的访问方式
2)提高了代码的复用性
3)提高安全性。
3.封装的原则:
1)将不需要对外提供的内容都隐藏起来。
2)把属性隐藏,提供公共方法对其访问。
private关键字:是一个权限修饰符,私有化修饰符
A:用于修饰成员变量和成员方法。
B:被修饰的内容在其他类中是不可以被访问的。
代码体现
class Demo1
{
public static void main(String[] args)
{
Person p = new Person();
//p.name = "白子画";
//p.name = "花千骨";
//p.name = "杀阡陌";
System.out.println(p.getName());
p.eat();
Person p2 = new Person();
p2.setName("白子画");
System.out.println(p2.getName());
p2.eat();
Person p3 = new Person();
p3.setName("花千骨");
System.out.println(p3.getName());
p3.eat();
Person p4 = new Person();
p4.setName("杀阡陌");
System.out.println(p4.getName());
p4.eat();
}
}
class Person
{
private String name = "糖宝";
private int age;
//定义方法,用来成员变量name赋值
public void setName(String mingzi) {
//安全措施
name = mingzi;
}
//定义方法,用来获取成员变量name
public String getName() {
return name;
}
//定义方法,用来成员变量age赋值
public void setAge(int nianling) {
age = nianling;
}
//定义方法,用来获取成员变量age
public int getAge() {
return age;
}
public void eat() {
System.out.println(name+"吃了");
}
}
二构造方法
用来创建实例对象
创建同时可以给属性赋值
(1)格式及特点
格式:
访问权限修饰符 类名(参数…){}
访问权限修饰符:
public,private 特点: A:方法名和类名相同 B:没有返回值类型 C:没有具体的返回值
(2)注意事项:
A:如果你不给构造方法,jvm会自动给你一个无参构造方法。
B:如果你给出了构造方法,那么,jvm将不再提供无参构造方法。
这个时候,你如果要使用无参构造方法:只能自己提供
三this关键字
(1)是一个关键字。代表当前对象的引用。
简单记:在方法中,哪个对象调用方法,this就代表谁。
(2)应用场景:
解决局部变量隐藏成员变量问题。
在构造方法中调用其他的构造方法(必须写在第一行)
this();
在其他方法中可以使用this.普通方法名()调用普通方法
this.eat();
代码实现
(3)以下情况必须显示的使用this:
1).“局部变量”覆盖“成员变量”时,可以使用this显示的访问被覆盖的“成员变量”;
否则访问的是“局部变量”;
2).在一个构造方法中调用本类的其它构造方法;this()或this(实参);
class Demo05
{
public static void main(String[] args)
{
Person p = new Person("雪见",16);
p.eat("逍遥");
p.eat();
Person p2 = new Person("灵儿",16);
p2.eat();
}
}
class Person
{
//定义成员变量
private String name;
private int age;
//定义构造方法
public Person(){}
public Person(String name,int age) {
this.name = name;
this.age = age;
}
//定义普通方法
public void eat(){
System.out.println(name + "吃了");
}
public void eat(String name){
System.out.println(name + "吃了");
}
//定义getters和setters
public void setName(String mingzi) {
name = mingzi;
}
public String getName() {
return name;
}
public void setAge(int nianling) {
age = nianling;
}
public int getAge() {
return age;
}
}
四static关键字
(1)是一个关键字。可以修饰成员变量和成员方法。
(2)静态的特点:
A:随着类的加载而加载
B:优先于对象存在
C:被类的所有对象共享
D:可以通过类名调用
(3)静态的注意事项:
A:在静态方法中是没有this关键字的。
B:静态方法只能访问静态的成员变量和静态的成员方法。
(4)静态内容的调用:
A:被对象调用
B:被类名调用
推荐被类名调用。
(5)什么时候该用static呢? 如果某个内容是所有对象共享的,就用静态修饰。
举例: 水杯和饮水机。 厕所和人。 老师和学生。 对于传智学生都是热爱编程。
代码实现
class Test04
{
public static void main(String[] args)
{
Student s = new Student();
s.setName("紫萱");
s.hitKeyBoard();
Student s2 = new Student("长卿",21,"蜀山");
s2.hitKeyBoard();
}
}
class Student
{
//定义私有化成员变量
private String name;
private int age;
private String address;
//定义空参构造
public Student() {}
//定义三个参数的构造
public Student(String mingzi,int nianling,String dizhi) {
name = mingzi;
age = nianling;
address = dizhi;
}
//定义普通功能性方法
public void hitKeyBoard() {
System.out.println(name+"在向着高薪前进!");
}
//定义各个属性的geters和setters
public void setName(String mingzi) {
name = mingzi;
}
public String getName() {
return name;
}
public void setAge(int nianling) {
age = nianling;
}
public int getAge() {
return age;
}
public void setAddress(String dizhi) {
address = dizhi;
}
public String getAddress() {
return address;
}
}