Java中封装、关键字及构造方法

61 阅读3分钟

1、封装

    a:隐藏实现细节,提供公共的访问方式。

    b:好处,隐藏实现细节,提供公共的访问方式。提高代码的复用性。提高代码的安全性。

    c:设计原则,把不想让外界知道的实现细节给隐藏起来,提供公共的访问方式。

    d:private是封装的一种体现。封装包括,类,方法,private修饰成员变量。

2、private关键字

    私有的意义,可以修饰成员和成员方法。特点,被private修饰后的成员只能在本类中访问。

this关键字

    a:代表当前的引用对象,哪个对象调用方法,该方法内部的this就是代表哪个对象。

    b:this的应用场景,解决了局部变量隐藏成员变量的问题。

3、构造方法

    a:作用,用于对象的数据进行初始化。

    b:格式,方法名和类名相同。没有返回值类型,连void都没有。没有返回值。

    c:如果我们没有写构造方法,系统会自动给一个无参构造方法,如果我们给出了构造方法,系统将不会给。

    例如:

    

//学生类构造方法
class Student {
	
	private String name;
	private int age;
	
	//无参构造方法
	public Student() {}
	
	//有参构造方法
	//用构造方法给成员变量赋值
	public Student(String name,int age) {
		this.name=name;
		this.age=age;
	}
	
	//用set方法给成员变量赋值(常用)
	public void setName(String name) {
		this.name=name;
	}
	
	public String getName() {
		return name;
	}
	
	public void setAge(int age) {
		this.age=age;
	}
	
	public int getAge() {
		return age;
	}
	
	//输出成员变量
	public void show() {
		System.out.println(name+"---"+age);
	}
}

public class Main {
	public static void main(String[] args) {
		//方式1用无参构造方法+set
		Student s1=new Student();
		s1.setName("贺志营");
		s1.setAge(20);
		System.out.println(s1.getName()+"---"+s1.getAge());//常用
		s1.show();
		System.out.println("-----------");
		//方式2
		Student s2=new Student("贺志营",20);
		System.out.println(s2.getName()+"---"+s2.getAge());//常用
		s2.show();
	}
}

4、static关键字

    a:静态的意思,可以修饰成员变量和成员方法。在静态方法区没有this对象,静态只能访问静态。

    b:静态的特点,随着类的加载而加载。优先于对象的存在。被类的所有对象共享。

    举例:

    


class Person{
	String name;
	int age;
	static String country;
	
	public Person() {}
	
	public Person(String name,int age) {
		this.name=name;
		this.age=age;
	}
	
	public Person(String name,int age,String country) {
		this.name=name;
		this.age=age;
		this.country=country;
	}
	
	public void show() {
		System.out.println(name+"---"+age+"---"+country);
	}
}
public class Main {
	public static void main(String[] args) {
		Person p1,p2,p3;
		p1=new Person("贺志营",20,"中国");
		p2=new Person("贺贺",19);
	        p3=new Person("阿营",18);
		p1.show();
		p2.show();
		p3.show();
	}
}

    c:可以通过类调用,既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。

    d:静态变量和成员变量的区别

        静态变量属于类,类变量。成员变量,属于对象,对象变量,实例变量。

        生命周期不同,静态变量是随着类的加载而加载,随着类的消失而消失。成员变量是随着对象的创建而存在,随着对象的消失而消失。

        调用不同,可以通过对象名调用也可以通过类名调用。成员变量只能通过对象名调用。

    举例:

    

class Student{
	private Student(){}//创建私有方法,这样就只能用类名访问了
	public static void eat() {
		System.out.println("吃");
	}
}
public class Main {
	public static void main(String[] args) {
		//Student s=new Student();这个会报错
		Student.eat();
	}
}

    e:main方法是静态的,public权限最大,static不用创建对象就能调用,void返回值给jvm没有意义,main就是一个常见的名称。String[] agrs可以接收数据,提供程序的灵活性,没用过。