Java基础知识笔记六(详细)

封装

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();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45893999/article/details/106733580
今日推荐