欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

第六章 面向对象,封装等

程序员文章站 2022-06-19 16:02:13
类 对象类:是一个抽象的概念:模板。比如:人,学生。对象:是一个看得见 ,摸得着的实体。组成:属性(静态特征)、方法(动态行为:功能的体现)类和对象之间的关系对象是类的一个实例(一个类可以创建多个对象)如:Student zhangS=new Stduent() ;Student liSi=new Stduent() ;如何创建使用对象通过 new 关键字来创建,通过操作符来进行调用里面的属性还有方法如:Student zhangS=new Stduent() ;zhangS....

类 对象
类:是一个抽象的概念:模板。比如:人,学生。
对象:是一个看得见 ,摸得着的实体。
组成:属性(静态特征)、方法(动态行为:功能的体现)
类和对象之间的关系
对象是类的一个实例(一个类可以创建多个对象)如:
Student zhangS=new Stduent() ;
Student liSi=new Stduent() ;
如何创建使用对象
通过 new 关键字来创建,通过操作符来进行调用里面的属性还有方法
如:
Student zhangS=new Stduent() ;
zhangS.name=“张三”;
zhangS.age=19;
zhangS.show();
创建对象和调用
1.创建对象
语法格式:

类名 对象名 = new 类名();

new是关键字

左半边的类名为对象的数据类型

右边的 类名() 称为类的构造方法

2.调用属性
语法格式:

对象名.属性 //引用对象的属性

3.调用方法
语法格式:

对象名.方法名() //引用对象的方法

实现具体的功能
如:public void show(){
}
语法:
访问修饰符 返回值类型 方法名([参数]){ }
无惨方法
//无返回值,无参:
public void show(){
System.out.println(“姓名:”+name);
}
//有返回值,无参
public String show(){
return “abc”;
}
有参方法
//一个基本参数
public void add(int num){ num++;
}
//多个基本参数
public void sum(int num,int num1){
int sum=num+num1;
}
//数组参数
public void sort(int[] array) {
Arrays.sort(array);
}
//对象参数
public void addStudent(Stduent stu){ System.out.println(stu.name);
}
//对象数组参数
public void update(Stuent[] stus){
for(Student stu:stus){
if(stu.score<60){
stu.score+=2;
}
}
}
无返回值的方法
//用void 修饰
public void show(){
System.out.println(“姓名:”+name);
}
有返回值的方法
若方法有返回值,必须使用return语句进行返回;并且返回值只能有一个。返回值的类型必须和你定义的类型一致。
public int sum(){
return 1;
}
public String show(String name){
return “—”;
}
public Stduent select(){
return new Student();
}
public int[] test(){
int arr[]={1,2};
return arr;
}
构造方法
作用:实例化对象
语法:
访问修饰符 方法名( ){//方法名与类名一致
}
//默认无参构造方法
如果自己修改,添加了新的构造方法,默认就不存在了。
public Student(){
}
public Student(){
name="";
age=19;
}
public Student(String name,int age){
this.name=name;
this.age=age;
}
方法的重载
同一类中,方法名相同,参数列表不同一组方法,称为方法的重载。返回值类型,访问修饰符无关。
//构造方法的重载
public Student(){
}
public Student(){
//this();
name="";
age=19;
}
public Student(String name,int age){
this.name=name;
this.age=age;
}
//方法的重载
public void add(int num,int num1){
int sum=num+num1;
}
public void add(double num1,double temp,double num2){
double sum=num1+temp+num2;
}
this关键字
this代表当前对象
作用:
可以区分成员变量和局部变量
调用构造方法(必须写在第一行)
this.方法名( );
局部变量与成员变量
位置:
局部变量定义方法内
成员变量定义在类里
作用范围:
局部变量(当前方法)
成员变量(当前类,其他类)
注意:
局部变量(无默认值,要想直接使用,需要初始化操作)
成员变量(有默认值)
同一个方法中不允许有两个同名的变量
不同的方法中有同名的变量
封装
    访问修饰符第六章   面向对象,封装等
static静态(在内存只有一份)
变量(静态变量,类变量)
类名.变量名称
直接使用
实例.(点)变量名(new 对象方式)
public class StaticTest {
static int num=0;//静态变量
static final String address=“运城”;//常量
public static void main(String[] args) {
StaticTest.num++;//类名.变量名
num++;//直接使用
StaticTest st1=new StaticTest();
st1.num++;//实例.变量名
System.out.println(StaticTest.num);
}
}
方法(类方法)
类名.方法名
方法名();
实例.(点)方法名;
public class StaticTest {
public static void show() {//静态方法
}
static final String address=“运城”;//常量
public static void main(String[] args) {
StaticTest.show();//类名.方法名
show();//直接使用
StaticTest st1=new StaticTest();
st1.show();//实例.方法名();
}
}
代码块
静态代码块,当java虚拟机加载类,就会执行该代码块多个静态代码块依次执行
public class StaticTest {
static int num = 100;// 静态的变量
static {//静态代码块
num += 100;
System.out.println(num);
}static {
num += 100;
System.out.println(num);
}
}
区别
静态:
在内存只有一份
被static修饰的变量
类的内部, 可以在任何方法内直接访问静态变量
其他类中, 可以直接通过类名访问
非静态
a.没有被static修饰的变量
b.每创建一个实例,就会为实例变量分配一次内存,实例变量在内存中有多个拷贝,互不影响
static方法注意事项
静态方法中不能使用this和super第六章   面向对象,封装等
不能直接访问所属类的实例变量和实例方法第六章   面向对象,封装等
可直接访问类的静态变量和静态方法
第六章   面向对象,封装等

封装
一.概念
封装的实质就是将类的状态信息隐藏在类的内部,不允许外部程序直接访问,

而是通过使用该类提供的方法来实现对隐藏信息的操作和访问。

二.步骤
1.修改属性的可见性
将类中的属性的访问修饰符修改为private

2.设置getter/setter方法
可以手动设置,也可以使用 Ctrl +Shift+S快捷键由系统添加

3.设置属性的存取限制
可以在set方法中进一步利用条件判断语句进行赋值限制。

1.概述
Java中的包机制也是封装的一种形式
包实际上是一种访问控制机制,通过包来限制和制约类之间的访问关系
包可以防止命名冲突
包类似于文件夹,易于找到和使用相应的类文件
包允许在更广的范围内保护类、数据和方法。
2.定义
语法格式:

package 包名;

package是关键字
包的声明必须是java源文件中的第一条非注释性语句,而且一个源文件只能有一个包声明语句
包名前缀通常使用组织网络域名的逆序。
包名的后续依不同机构各自内部的规范不同而不同,可能以特定目录名的组成来区分部门、项目、机器或注册名
一般都用com,edu,gov,net及org来作为域名创建包
3.使用
声明:声明当前类所在的包

导入(import):声明在当前类中要使用到其他类所在的包 快键键ctrl+shift+o

本文地址:https://blog.csdn.net/wuzhangxiong123/article/details/107348268