编程语言
首页 > 编程语言> > 人生苦短我学Java-7-面向对象三大特性之封装及构造器/this等关键字使用

人生苦短我学Java-7-面向对象三大特性之封装及构造器/this等关键字使用

作者:互联网

一、封装

面向对象三大特性之封装。

1、封装性的体现:属性私有化/不对外暴露的私有方法/单例模式等等

可将属性数据声明为私有的:private,再通过封装提供公共的:public实现对属性的操作,目的:

如下实现:①setAge对外age属性进行操作;②getAge实现对外age的查询;但它的属性是私有的,实现属性的保护;

package com.object1226;

/*
@USER PPL-泡泡龙 or 广深小龙
@date 2020-12-26 22:42
*/

public class AnimalTest {
    public static void main(String[] args) {
        Animal ani = new Animal();
        ani.setAge(10);
//        System.out.println(ani.age);

        // 私有的,查,独立封装一个get方法
        System.out.println(ani.getAge());
    }
}

class Animal {
    private int age;

    public void setAge(int updateAge) {
        if (updateAge >= 0 && updateAge % 2 == 0) {
            age = updateAge;
        } else {
            age = 0;
            System.out.println("年龄输入必须为正数!");
        }
    }

    public int getAge() {
        if (age >= 0 && age % 2 == 0) {
            return age;
        } else {
            age = 0;
            System.out.println("已默认为:0");
            return age;
        }
    }
}

2、四种权限修饰符

封装性的体现,需要权限修饰符来配合:

private、缺省(默认的)、protected、public

①四种权限都可以修饰:属性、方法、构造器、内部类

②修饰类,只能使用:缺省(默认)、public

二、构造器

1、也叫构造方法,但和方法是不一样的,构造器方法的作用:

方法是通过new对象后,调用方法;但构造器是在造对象的时候直接运行了。

存在多个重名的构造器,那么就是构造器的重载。如下例子:

类名称为:Person   再写一个构造方法名称为:Person。在一个类中,至少有一个构造器方法。注:构造方法不能有关键字:void (不然真的是个类的方法名了)

package com.object1223;

/*
@USER PPL-泡泡龙 or 广深小龙
@date 2020-12-27 14:22
*/

public class PersonTest {
    public static void main(String[] args) {

        // 创建类的对象,默认是空参数
//        Person p = new Person();

        // 在new的时候传入参数,初始化属性
        Person p = new Person("PPL");
        System.out.println(p.GetName());
    }
}

class Person {
    String name;
    // 存在多个重名的构造器,那么就是构造器的重载
    // 构造器1
    public Person(String str) {
        name = str;
    }

    // 构造器2
    public Person() {
        System.out.println("构造器2");
    }

    //方法
    public String GetName() {
        return name;
    }
}

2、属性赋值的顺序:

①默认初始化

②显示初始化

③构造器初始化

④通过对象的方法或对象的属性的方式初始化;

3、this关键字的使用

this可以修饰:属性、方法、构造器

特殊情况下,如果方法的形参和类的属性同名时,我们必须显式使用this.变量,表名此属性为类的属性(形参和类属性重名下,用this声明为类的变量)

this关键字属性调用,如下例子:

package com.object1223;

/*
@USER PPL-泡泡龙 or 广深小龙
@date 2020-12-27 15:32
*/

public class ThisTest {
    public static void main(String[] args) {
        Person1 p1 = new Person1();
        p1.setName("PPL");
        System.out.println(p1.getName());
    }
}

class Person1 {
    String name;

    public void setName(String name) {
        name = name;        // 方法的形参与类的属性重名的情况下,又想重名咋办?
        this.name = name;   // 可以使用this关键字,声明为类的属性;
    }

    public String getName() {
        return name;
    }
}

this关键字构造器中调用,如下例子:

构造器3调用构造器2,构造器2调用构造器1。

package com.object1223;

/*
@USER PPL-泡泡龙 or 广深小龙
@date 2020-12-27 15:54
*/

public class ThisC {
    public static void main(String[] args) {
        ThisCTest t = new ThisCTest("PPL", 18);
        System.out.println(t.getAge());
        System.out.println(t.getName());
    }
}

class ThisCTest {
    private String name;
    private int age;

    // 构造器1
    public ThisCTest() {
        System.out.println("创建对象初始化:正在初始化中...");
    }

    // 构造器2
    public ThisCTest(String name) {
        this();         // this(形参),既调用:构造器1
        this.name = name;
    }

    // 构造器3
    public ThisCTest(String name, int age) {
        this(name);     // this(形参),既调用:构造器2
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }
}

4、package关键字的使用 

 5、import关键字的使用 

在IDEA中也挺方便,如果要使用哪个包,就直接写会自动导入,如:

import java.util.Scanner;

MVC设计模式

①model 模型层:主要处理数据

②view 视图层:显示数据

③controller 控制层:处理业务逻辑

 感谢尚硅谷在B站开源教学视频提供学习,欢迎来大家QQ交流群一起学习:482713805

标签:Java,name,age,构造,苦短,我学,属性,public,String
来源: https://www.cnblogs.com/gsxl/p/14181697.html