有参与无参构造:
- 编写一个类时没有添加无参构造方法,那么编译器会自动添加无参构造方法;(如果自己添加构造函数,无论有参数或是没参数,默认构造函数都将无效)
- 编写时添加了有参构造方法而未添加无参构造方法,那么编译器只认有参构造方法而不会默认添加无参构造方法!
- 如果需要使用无参构造方法,一定要在类里面添加
thish关键字:表示当前对象,指向使用方法的对象 |
举例子:
public class Student {
//定义属性
String name;
int age;
char gender;
double height;
double weight;
String phoneNumber;
String address;
String hobby;
String country;
String job;
String email;
public Student(String name, int age, char gender, double height,//有参构造
double weight, String phoneNumber, String address, String hobby,
String country, String job, String email) {
this.name = name;
this.age = age;
this.gender = gender;
this.height = height;
this.weight = weight;
this.phoneNumber = phoneNumber;
this.address = address;
this.hobby = hobby;
this.country = country;
this.job = job;
this.email = email;
}
public Student() { //无参构造
}
public class Test {
public static void main(String[] args) {
// 输出
Student stu=new Student("小明",12, (char) 0, 0, 0, null, null, null, null, null, null);
System.out.println(stu.age);
}
}
方法重载:
在同一个类中,多个方法的方法名相同,参数列表不同,这个现象就是方法重载,与方法的返回值,访问修饰符无关
参数列表不同体现在参数的个数,参数的类型,参数的顺序
sum(int a,int b);
sum(int a,int b,int c);
sum(int a,int b,double c);
sum(double c,int a,int b);
局部变量和成员变量
成局变量:
定义在类的方法外(循环结构除外)的变量
成员变量的作用域是整个类中
成员变量可以不进行初始化,系统会给一个默认值
同一个类中不能有同名的全局变量
同一个类中可以有同名的全局变量和局部变量,局部变量有更高的优先级
局部变量:
定义在方法内的(循环结构内)的变量
局部变量的作用仅限于定义它的结构内
局部变量在使用之前要初始化,否者程序会报错
同一个方法不能有同名的局部变量
封装
概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方
法来实现对隐藏信息的操作和访问(简单来说,就是把更多的东西藏起来,对外提供便利的接口)
步骤:
1:将属性设置为private
2:创建共有的getter/setter方法
3:在getter/setter方法中加入属性控制语句
优点:
- 便于使用者正确使用系统,防止错误修改属性
- 有助于系统之间的松耦性,提高系统的独立性
- 提高软件的可常用性
- 降低了构建大型系统的风险
包
- 同一个包中不能有同名的类文件
- 同一个类文件中可以声明多个类,但是一个类文件中只能有一个public修饰的类,并且 这个类名要和文件名相同
- 一个类文件中
public修饰的类可以被任何地方引用
default 修饰的类只能被本包里面其他的类访问,从而说明默认修饰符为包级私有
访问控制符
作用域 修饰符 | 同一个类中 | 同一个包中 | 子类中 | 任何地方 |
private | 可以 | 不可以 | 不可以 | 不可以 |
默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |