文章目录
封装
1.封装概述
是面向对象三大特征之一
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。就像年龄。
2.封装原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
成员变量private,提供对应的getXxx()/setXxx()方法
3,优点:
通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性
this关键字
1.this:代表所在类的对象引用
方法被哪个对象调用,this就代表那个对象
2.什么时候使用this?
局部变量隐藏成员变量
- java中有就近原则
- 在定义变量名称的时候需要达到见名之意
- this
- 方法被那个对象调用,this就是那个对象
public class Student {
private String name;//成员变量
private int age;
public void show(String name){//局部变量
System.out.println(this);
System.out.println(this.name+"你好"+"我来自北京,我是:"+name);
}
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 class DemoStudent {
public static void main(String[] args) {
//创建学生对象
Student stu = new Student();
System.out.println(stu);
//对成员变量进行赋值
stu.setName("小明");
stu.setAge(38);
stu.show("小红");
System.out.println("======================");
Student stu2 = new Student();
System.out.println(stu2);
stu.setName("小李");
stu2.show("小军");
}
}
构造方法
1.构造方法作用概述
给对象的数据进行初始化
2.构造方法格式
方法名与类名相同
没有返回值类型
public Person(){
System.out.println("构造方法被执行了...");
}
3.构造方法注意事项
如果你不提供构造方法,系统会给出默认构造方法
如果你提供了构造方法,系统将不再提供
构造方法也是可以重载的
4,构造的作用:
(1)创建对象
(2)用来对变量进行赋值
public Person(String name){
this.name = name;
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
如何调用构造方法?
构造方法需要new关键字进行调用
格式: 类名 对象名 = new 类名(...);
public class DemoPerson {
public static void main(String[] args) {
Person p = new Person();
System.out.println("------------");
Person p2 = new Person("小明");
p2.show();
System.out.println("------------");
Person p3 = new Person("小军",18);
p3.setAge(18);
p3.show();
}
}
标准类的写法
1,标准的学生类:
也称为JavaBean是Java语言编写类的一种标准规范。符合JavaBean的类,要求类必须是具体的和公共的,并且具有无参数的构造方法,提供用来操作成员变量的set和get方法。
2,给成员变量赋值的方式:
(1)无参构造方法+setXxx()
(2)带参构造方法
我们现在要定义一个标准的类,这个标准的类又被称为javabean。
什么是javabean
类的修饰符是公共的
具备有参和无参构造
成员变量必须是private私有修饰
必须为变量提供get和set方法
public class Student {
private String name;
private int age;
private boolean male;
public Student() {
}
public Student(String name, int age, boolean male) {
this.name = name;
this.age = age;
this.male = male;
}
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;
}
public boolean isMale() {
return male;
}
public void setMale(boolean male) {
this.male = male;
}
}
public static void main(String[] args) {
//创建两个对象,使用构造和set方法分别去进行赋值
Student stu1 = new Student();
stu1.setName("小明");
stu1.setAge(18);
System.out.println("姓名:"+stu1.getName()+"年龄:"+stu1.getAge());
Student stu2 = new Student("小红",19,true);
System.out.println("姓名:"+stu2.getName()+"年龄:"+stu2.getAge());
}
3,注意事项:
如果你的成员变量里面涉及到Boolean类型,
那么变量对应的setXxx方法不变,
但是getXxx方法需要写成 isXxx
fn+alt+insert 快捷键
类名作为形式参数和返回值
1,类名作为形式参数案例
其实是该类的对象
public class Student {
public void study(){
System.out.println("每天在学习");
}
}
public class Teacher {
public void method(Student s){
s.study();
}
}
如果类作为方法的参数,其实就是传递当前类的对象
public class Test {
public static void main(String[] args) {
Teacher t = new Teacher();
Student stu = new Student();
t.method(stu);
}
}
2,类名作为返回值案例
返回的其实是该类的对象
public class Student {
public void study(){
System.out.println("每天在学习");
}
}
public class Teacher {
public Student getStudent(){
Student stu = new Student();
return stu;
}
}
如果类作为方法的返回值,返回的其实是对象
public class Test {
public static void main(String[] args) {
Teacher t = new Teacher();
Student stu = t.getStudent();
stu.study();
}
}