栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面向对象基础7(包和封装)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象基础7(包和封装)

面向对象基础7(包和封装)

面向对象三大特征——封装、集成、多态

封装

    隐藏对象的内部实现细节

    将一些公共操作的细节暴露

    ​ 如果通过暴露的界面操作对象,该对象的内部状态不会被破坏

简而言之,封装要求合理的隐藏,合理的暴露。

实现方式——访问控制符

private(类访问权限)——该修饰符修饰的成员,只能在该类中被访问

public(公共)——该修饰符修饰的成员可以在任意地方被访问

protected(子类访问权限)——该修饰符修饰的成员,能在该类,该类所在的包以及子类中被访问

默认——(包访问权限)——该修饰符所修饰的成员,只能在该类以及该类所在的包中被访问

private默认protectedpublic
当前类
当前包
子类
任意
规范
    一般的,成员变量(实例变量)一般用private修饰,为了隐藏实现细节为每个成员变量提供getter和setter方法需要暴露的公共方法需要用public修饰如果希望一个方法主要用于被子类重写,用protected修饰

举例:

package users;

public class User {
    private String name;
    private int age;//此时成员变量name和age已经被封装,用户无法调用或是更改
	//用户名长度要求在6到10个字符之间
    public void setName(String name) {
        if (name.length() > 10 || name.length() < 6) {
            System.out.println("Error" + " " + name);
            return;
        }
        this.name = name;
    }

    public String getName() {
        return this.name;
    }
	//用户年龄要求在18到35岁之间
    public void setAge(int age) {
        if (age > 35 || age < 18) {
            System.out.println("不合需求的廉价劳动力" + " " + age);
            return;
        }
        this.age = age;
    }

    public int getAge() {
        return this.age;
    }
}
import users.User;

public class UserTest {
    public static void main(String[] args) {
        User me = new User();
        me.setName("aa");
        me.setAge(20);
        System.out.println(me.getAge());
        User u = new User();
        System.out.println(me.getName());
        u.setName("gtn2333333");
        u.setAge(2);
        System.out.println(u.getName());
        System.out.println(u.getAge());
    }
}

包(package)

目的——解决同名类冲突问题

包包含所需的类

语法——推荐用公司域名倒写加项目名

定义包之后,其下类完整的类名变为包名.类名

导入包

import用于省略在某一类中调用别的包中的类所需要写的包名(省略写包名)

基本语法:import 包名.类名;——导入该包下的该类,例如import java.util.Scanner;

import 包名.类名.*——导入该包下的所有类,此处的*只能代表类名,包名不能用*

静态导入

import static用于导入指定类下面的所有静态成员(省略写类名)

基本语法:import static 包名.类名.静态成员名导入某包某类的某静态成员

​ import static 包名.类名.静态成员名导入某包某类的所有静态成员

import static java.lang.System.out;

public class package {
    public static void main(String[] args) {
        out.println("2333");
    }
}

此处导入的就是包(也可以形象的理解为公司)java.lang(language语言的缩写)的System类中的静态成员out,此时调用输出语句时可以省略类名System

Java源程序的结构

package语句要放在第一条

N条import语句

一个public class和若干个class

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750623.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号