面向对象的三大特征:
• 封装(encapsulation)• 继承(inheritance)
• 多态(polymorphism)
类中的成员用来描述成员的特性,类的成员有成员变量和成员函数。
一个类所定义的属性被其他对象访问所加的(访问控制修饰符)所限制
这是访问控制修饰符的访问范围
修饰符 | 类 | 子类 | 包 | 包外 |
public | 可见 | 可见 | 可见 | 可见 |
..(default) | 可见 | 可见 | 可见 |
|
protected | 可见 | 可见 |
|
|
private | 可见 |
|
|
构造方法
为了便于使用new关键字创建对象实例,类提供了构造函数,构造方法特点如下:
①构造方法与类名相同,不返回任何数据。不被继承,也不抛出异常
②可以使用new关键字创建实例对象,会自动调用该构造函数
③当类中没有构造函数时,编译器会自动给类中加上一个无参的空构造函数
下面的程序就会报错,因为存在构造方法,所以编译器就不会添加默认的构造方法
public class Test{
public static void main(String[] args){
Person p = new Person();
}
}
class Person{
private String name;
Person(String name){
this.name = name;
}
}
每个对象的每个实例方法都拥有一个this变量指向对象自己,供自己的方法内部代码中使用,上面的this变量就是指向一个Person类的实例。
构造代码块
作用:
给对象进行初始化。对象一建立就运行,而且优于构造函数执行。
和构造函数的区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象进行初始化。
示例:
public class Test {
public static void main(String[] args)
{
Student p = new Student("lisir");
}
}
class Student
{
private String name;
{ //这是构造代码块,优于构造函数执行
System.out.println("构造代码块");
}
Student(String name){
this.name = name;
System.out.println("构造函数");
}
}
输出结果为:
构造代码块
构造函数
封装是类的三大特征之一,是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
封装原则:
① 将不需要对外提供的内容都隐藏起来。(使用private关键字)
② 把属性都隐藏,提供公共方法对其访问。(根据需要提供get与set方法)
下面是一个典型的类的封装性的代码
class Student
{
private String name;
private int age;
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;
}
Student(String name,int age){
this.name = name;
this.age = age;
}
}
使用getName与setName方法得到和设置name属性,getAge与setAge方法得到和设置age属性。这样就实现了数据的封装。