【韩顺平Java笔记】第8章:面向对象编程(中级部分)【272-284】

272. 包基本介绍

272.1 看一个应用场景

272.2 包的三大作用

272.3 包的基本语法

273. 包原理

274. 包快速入门

在不同的包下面创建不同的Dog类

275. 包命名

276. 常用的包

一个包下,包含很多的类,java 中常用的包有:

  1. java.lang.* //lang 包是基本包,默认引入,不需要再引入.
  2. java.util.* //util 包,系统提供的工具包, 工具类,使用 Scanner
  3. java.net.* //网络包,网络开发
  4. java.awt.* //是做 java 的界面开发,GUI

277. 包的使用细节


最好还是需要什么类就导入什么类

package com.Marisa;import java.util.Arrays;public class Import01 {public static void main(String[] args) {//使用系统提供的Arrays完成数组排序int[] arr = {-1, 20 ,2, 13, 3};Arrays.sort(arr);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "\t");}System.out.println();}
}



278. 访问修饰符规则

278.1 基本介绍

java 提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围):

  1. 公开级别:用 public 修饰,对外公开
  2. 受保护级别:用 protected 修饰,对子类和同一个包中的类公开
  3. 默认级别:没有修饰符号,向同一个包的类公开.
  4. 私有级别:用 private 修饰,只有类本身可以访问,不对外公开.

278.2 四种访问修饰符的访问范围

279. 访问修饰符细节


在com.Marisa.modifier包下创建A类,B类和Test类,其中Test类中有主方法,在com.Marisa.pkg包下写一个Test类,这个Test类也有主方法,分别执行两个主方法

A类:

package com.Marisa.modifier;public class A {//四个属性public int n1 = 100;protected int n2 = 200;int n3 = 300;private int n4 = 400;public void m1(){//在同一个类中,可以访问//public, protected, 默认, private//修饰的属性和方法System.out.println("n1=" + n1);System.out.println("n2=" + n2);System.out.println("n3=" + n3);System.out.println("n4=" + n4);}
}

B类:

package com.Marisa.modifier;public class B {//同包public void say(){A a = new A();//在同一个包下可以访问public,protected和默认//但是不能访问privateSystem.out.println("n1=" + a.n1);System.out.println("n2=" + a.n2);System.out.println("n3=" + a.n3);}}

com.Marisa.modifier包下的Test类:

package com.Marisa.modifier;public class Test {public static void main(String[] args) {A a = new A();a.m1();}
}

com.Marisa.pkg包下的Test类:

package com.Marisa.pkg;import com.Marisa.modifier.A;public class Test {public static void main(String[] args) {A a =new A();//在不同包下,可以访问public修饰的属性,//但是不能访问protected 默认 privateSystem.out.println("a.n1= " + a.n1);}
}

执行com.Marisa.modifier包下的Test类主方法的结果为:
n1=100
n2=200
n3=300
n4=400
n1=100
n2=200
n3=300
执行com.Marisa.pkg包下的Test类的主方法为:
a.n1= 100

  • 只有默认和public可以修饰类,访问权限遵循上述规则

方法也遵循


280. 封装介绍

面向对象编程有三大特征:封装、继承和多态。

封装的理解和好处:

281. 封装步骤

282. 封装快速入门

package com.Marisa.encap;public class Encapsulation01 {public static void main(String[] args) {Person person = new Person();person.setName("你是一个一个一个");person.setAge(114514);person.setSalary(114514);System.out.println(person.info());}}
class Person{public String name;//名字,公开的private int age;// age 私有的private double salary;// 薪水,私有//自己写set get方法太慢,使用快捷键//然后根据要求完善代码public int getAge() {return age;}public void setAge(int age) {if(age >=1 && age<=120){this.age = age;}else{System.out.println("你设置的年龄不对,年龄要在1-120,已设置默认24");this.age = 24;//给一个默认的24}}public double getSalary() {//可以增加权限判断return salary;}public void setSalary(double salary) {this.salary = salary;}public void setName(String name){//加入对数据的校验,相当于增加了业务逻辑if(name.length() >= 2 && name.length() <= 6){this.name = name;}else{System.out.println("名字的长度不对,需要(2-6)个字符,默认名字田所浩二");this.name = "田所浩二";}}public String getName(){return name;}//写一个方法,返回属性信息public String info(){return "信息为\nname=" + name + "\nage=" + age + "\nsalary=" +salary;}
}

运行结果:
名字的长度不对,需要(2-6)个字符,默认名字田所浩二
你设置的年龄不对,年龄要在1-120,已设置默认24
信息为
name=田所浩二
age=24
salary=114514.0

283. 封装与构造器

将刚才的代码加入构造器,将构造器与setXxx结合

package com.Marisa.encap;public class Encapsulation01 {public static void main(String[] args) {Person person = new Person("你是一个一个一个", 114514, 114514);System.out.println(person.info());}}
class Person{public String name;//名字,公开的private int age;// age 私有的private double salary;// 薪水,私有//自己写set get方法太慢,使用快捷键//然后根据要求完善代码public Person(){}//有3个属性的构造器public Person(String name, int age, double salary) {
//        this.name = name;
//        this.age = age;
//        this.salary = salary;//将set方法写在构造器中setName(name);setAge(age);setSalary(salary);}public int getAge() {return age;}public void setAge(int age) {if(age >=1 && age<=120){this.age = age;}else{System.out.println("你设置的年龄不对,年龄要在1-120,已设置默认24");this.age = 24;//给一个默认的24}}public double getSalary() {//可以增加权限判断return salary;}public void setSalary(double salary) {this.salary = salary;}public void setName(String name){//加入对数据的校验,相当于增加了业务逻辑if(name.length() >= 2 && name.length() <= 6){this.name = name;}else{System.out.println("名字的长度不对,需要(2-6)个字符,默认名字田所浩二");this.name = "田所浩二";}}public String getName(){return name;}//写一个方法,返回属性信息public String info(){return "信息为\nname=" + name + "\nage=" + age + "\nsalary=" +salary;}
}

运行结果:
名字的长度不对,需要(2-6)个字符,默认名字田所浩二
你设置的年龄不对,年龄要在1-120,已设置默认24
信息为
name=田所浩二
age=24
salary=114514.0

284. 封装课堂练习


Accoun.java:

package com.Marisa.encap;public class Account {private String name;//姓名private double balance;//余额private String password;//密码public String getName() {return name;}public void setName(String name) {if(name.length() >=2 && name.length() <=4){this.name = name;}else{System.out.println("名字输入不合法,长度为2,3,4,已设置默认名字田所浩二");this.name = "田所浩二";}}public double getBalance() {return balance;}public void setBalance(double balance) {if(balance > 20){this.balance = balance;}else{System.out.println("余额必须超过20,已设置默认值0");this.balance = 0.0;}}public String getPassword() {return password;}public void setPassword(String password) {if(password.length() == 6){this.password = password;}else{System.out.println("密码必须为6位,已设置默认密码:000000");this.password = "000000";}}//打印信息public String info(){//可以增加权限校验return "信息:\nname=" + name +"\nbalance=" + balance;}public Account(String name, double balance, String password) {setName(name);setBalance(balance);setPassword(password);}
}

AccountTest.java:

package com.Marisa.encap;public class AccountTest {public static void main(String[] args) {Account account = new Account("你是一个一个", 1, "1145141919");System.out.println(account.info());}
}

运行结果:
名字输入不合法,长度为2,3,4,已设置默认名字田所浩二
余额必须超过20,已设置默认值0
密码必须为6位,已设置默认密码:000000
信息:
name=田所浩二
balance=0.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/441009.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hdfs伪分布式集群搭建

1 准备 vmware 虚拟三台centos系统的节点三台机器安装好jdk环境关闭防火墙&#xff08;端口太多&#xff0c;需要的自行去开关端口&#xff09;hadoop压缩包解压至三台服务器 可在一台节点上配置完成后克隆为三台节点 2 host修改 vi /etc/hosts在每个节点上添加三台机器的i…

linux部署NFS和autofs自动挂载

目录 &#xff08;一&#xff09;NFS&#xff1a; 1. 什么是NFS 2. NFS守护进程 3. RPC服务 4. 原理 5. 部署 5.1 安装NFS服务 5.2 配置防火墙 5.3 创建服务端共享目录 5.4 修改服务端配置文件 (1). /etc/exports (2). nfs.conf 5.5 启动nfs并加入自启 5.6 客户端…

求矩阵的鞍点

题目&#xff1a;求一个矩阵的鞍点&#xff0c;即行上最小而列上最大的元素。 代码&#xff1a;&#xff08;多个最小值认为第一个为最小&#xff0c;更严谨的代码在最后&#xff09; #include<iostream> #include<time.h> using namespace std;int main(){int n…

【Qt】控件概述(7)—— 布局管理器

布局管理器 1. 布局管理器2. QVBoxLayout——垂直布局3. QHBoxLayout——水平布局4. QGridLayout——网格布局5. QFormLayout——表单布局6. QSpacer 1. 布局管理器 在我们之前值ui界面进行拖拽设置控件时&#xff0c;都是通过手动的控制控件的位置的。同时每个控件的位置都是…

贪心算法c++

贪心算法C概述 一、贪心算法的基本概念 贪心算法&#xff08;Greedy Algorithm&#xff09;&#xff0c;又名贪婪法&#xff0c;是一种解决优化问题的常用算法。其基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决…

实验OSPF路由协议(课内实验)

实验1&#xff1a;OSPF路由协议 实验目的及要求&#xff1a; 通过实验&#xff0c;能够理解链路状态型路由协议OSPF协议的工作原理&#xff0c;掌握如何实现单区域 OSPFv2配置指令&#xff0c;能够熟练的应用各种OSPF协议相关的配置指令完善网络设计。掌握验证OSPFv2网络连接…

Linux启动mysql报错

甲方公司意外停电&#xff0c;所有服务器重启后&#xff0c;发现部署在Linux上的mysql数据库启动失败.再加上老员工离职&#xff0c;新接手项目&#xff0c;对Linux系统了解不多&#xff0c;解决起来用时较多&#xff0c;特此记录。 1.启动及报错 1.1 启动语句1 启动语句1&a…

利用 OpenAI 和 Python 预测股市行情

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: 本文介绍了如何利用 OpenAI 和 Python 进行股市情绪预测。主要通过使用 EODHD 提供的股市和金融新闻 API 来提取新闻数据,并利用 LangChain 和 OpenAI 的大型语言模型进行情感分析。 一、综述 …

Eureka的搭建、注册和拉取

目录 搭建 动手实践 搭建EurekaServer 创建项目 编写启动类 添加application.yml文件 启动EurekaApplication ​编辑 总结 搭建EurekaServer 注册 将user-service服务注册到EurekaServer 将order-service服务注册到EurekaServer 重启order-service和user-service…

将自己写好的项目部署在自己的云服务器上

准备工作 这里呢我要下载的终端软件是Xshell 如图&#xff1a; 自己准备好服务器&#xff0c;我这里的是阿里云的服务器&#xff0c; 如图&#xff1a; 这两个准备好之后呢&#xff0c;然后对我们的项目进行打包。 如图&#xff1a; 这里双击打包就行了。 找到自己打成jar包…

Linux shell编程学习笔记85:fold命令——让文件瘦身塑形显示

0 引言 我们使用的电脑屏幕有宽有窄&#xff0c;我们有时候希望文件能按照我们的屏幕宽度来调整和匹配&#xff0c;这时我们可以使用fold命令。 1 fold命令 的帮助信息、功能、命令格式、选项和参数说明 1.1 fold 命令 的帮助信息 我们可以输入命令 fold--help 来查看fold …

[uni-app]小兔鲜-08云开发

uniCloud可以通过JS开发服务端,包含云数据库, 云函数, 云存储等功能, uniCloud可结合 uni-ui 组件库使用 效果展示: <picker>城市选择组件不支持h5端和APP端, 所以我们使用 <uni-data-picker>组件进行兼容处理 <uni-data-picker>的数据使用云数据库的数据 云…

Docker安装及使用记录

本文汇总一下 Docker 的安装过程和使用过程中的问题 安装过程 Windows Linux 更新软件源&#xff1a;Linux安装前可先更新以下各自发行版包管理器的软件源 卸载旧版本&#xff1a;如果之前安装过的话&#xff0c;可以先卸载 yum remove docker docker-common docker-sel…

Study-Oracle-10-ORALCE19C-RAC集群维护

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。 一、RAC的逻辑架构与进程 1、RAC 与单实例进程的对比 2、RAC相关进程功能 3、在主机查看RAC后台进程 快捷键设置 alias sqlplus=rlwrap sqlplus alias rman=rlwrap rman alias crsctl=/u01/app…

Android Automotive(一)

目录 什么是Android Automotive Android Automotive & Android Android Automotive 与 Android Auto 什么是Android Automotive Android Automotive 是一个基础的 Android 平台,它能够运行预装的车载信息娱乐系统(IVI)应用程序,以及可选的二方和三方 Android 应用程…

C(十五)函数综合(一)--- 开公司吗?

在这篇文章中&#xff0c;杰哥将带大家 “开公司”。 主干内容部分&#xff08;你将收获&#xff09;&#xff1a;&#x1f449; 为什么要有函数&#xff1f;函数有哪些&#xff1f;怎么自定义函数以及获得函数的使用权&#xff1f;怎么对函数进行传参&#xff1f;函数中变量的…

Python和R及Julia妊娠相关疾病生物剖析算法

&#x1f3af;要点 算法使用了矢量投影、现代优化线性代数、空间分区技术和大数据编程利用相应向量空间中标量积和欧几里得距离的紧密关系来计算使用妊娠相关疾病&#xff08;先兆子痫&#xff09;、健康妊娠和癌症测试算法模型使用相关性投影利用相关性和欧几里得距离之间的关…

C++(Qt)软件调试---内存调试器Dr.Memory(21)

C(Qt)软件调试—内存调试器Dr. Memory&#xff08;21&#xff09; 文章目录 C(Qt)软件调试---内存调试器Dr. Memory&#xff08;21&#xff09;[toc]1、概述&#x1f41c;2、安装Dr.Memory&#x1fab2;3、命令行使用Dr.Memory&#x1f997;4、Qt Creator集成使用Dr.Memory&…

MFC工控项目实例二十三模拟量输入设置界面

承接专栏《MFC工控项目实例二十二主界面计数背景颜色改变》 1、在SenSet.h文件中添加代码 #include "BtnST.h" #include "ShadeButtonST.h"/ // SenSet dialogclass SenSet : public CDialog { // Construction public:SenSet(CWnd* pParent NULL); //…

2024Java最新面试题总结(针对于一些小厂、中厂)

这是根据个人面试经历总结出来的一些经验希望可以帮助到有需要的人。 面试的时候&#xff0c;会先让你进行自我介绍&#xff0c;这个大家准备一两分钟的面试稿就可以。然后就是正式面试&#xff0c;面试官一般是两个人以上&#xff0c;开始&#xff0c;面试官会先提问一些基本…