【java&eclipse】Class类的创建、定义、权限、特性

目录

一、类的创建

1.1 创建类包(Package)

1.2 创建类(Class)

二、类的定义

2.1 成员变量

2.2 构造方法

三、类的访问权限

四、类的三大特性

4.1 封装性

4.2 继承性

4.3 多态性


一、类的创建

1.1 创建类包(Package)

(选做)为了更好地管理日后越来越多的类,首先新建类包(Package),相当于文件夹的作用。步骤如图:

1.2 创建类(Class)

右击类包,依次点击New-Class,输入类名,点击Finish完成创建

二、类的定义

2.1 成员变量

2.2 构造方法

以管理员类(Admin.java)为例,定义成员变量(属性)和构造方法:

package javaBean;

public class Admin {
	//类是属性和功能的封装体
	//属性(特征)
	private String id;
	private String name;
	private String psw;
	private String type;
	//功能(方法、函数)
	/*
	 * 用户自定义构造方法,系统默认的构造方法就会被屏蔽,
     * 如果用户需要此默认构造方法,则必须显式定义出来
	 */
	public Admin() {}
	public Admin(String id,String name,String psw,String type) { 
		//方法名和类名同名、没有返回值类型,此方法称为构造方法,
        //作用:用类创建对象时进行初始化
		this.id=id;
		this.name=name;
		this.psw=psw;
		this.type=type;
	}
	public String getId() {  
		return id;
	}
	public void setId(String id) { 
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPsw() {
		return psw;
	}
	public void setPsw(String psw) {
		this.psw = psw;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getAll() {
		return id+" "+name+" "+psw+" "+type;
	}
}

除手动输入外,也可以使用Generate自动生成所选变量的getter/setter等常见方法。

三、类的访问权限

Class类、成员变量、成员方法的访问权限:

同一个类同一个包不同包下子类不同包下非子类
Private(私有)
Default(默认)
Protected(受保护)
Public(公共)

(注意:Class类的访问权限不可以是private或protected)

四、类的三大特性

4.1 封装性

(1)含义:把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。

        封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。即用户无需知道内部的数据和方法的具体实现细节,只需根据外部接口进行操作。

例:Admin类的使用

package app;
import javaBean.Admin;  //导入Admin类

public class AdminApp {

	public static void main(String[] args) {
		//创建管理员
		Admin adm1=new Admin("1001","小波","123456","rev");
//		等价于:		
//		Admin adm1=new Admin();
//		adm1.setId("1001");
//		adm1.setName("小波");
//		adm1.setPsw("123456");
//		adm1.setType("rev");
		System.out.println(adm1.getAll());
	}

}

  

(2)实现:

①修改属性的访问控制符(修改为private);
②创建getter/setter方法(用于属性的读写);
③在getter/setter方法中加入属性控制语句(用于判断属性值的合法性);

直接通过对象调用属性,修改属性值是不安全的,那怎么办?

为了实现良好的封装,通常将类的成员变量声明为private,为了能够在外部使用,可以通过定义public方法来对这个变量来访问。对于一个变量XX,一般定义2个方法来实现读取和赋值操作,分别是getXX()和setXX(参数xx)。

*设置为私有(private)的成员变量只能在本类中使用,所以也叫全局变量

(3)优缺点:

①优点:将变化隔离;便于使用;提高重用性;提高安全性;
②缺点:将变量等使用private修饰,或者封装进方法内,使其不能直接被访问,增加了访问步骤与难度;

4.2 继承性

(1)含义:多个类具有共同的属性与方法的时候,将这些共同部分抽取出来定义到一个公共的类中,其他及各类可以与这个公共的类形成继承关系,从而在多个类中不需要重复定义公共部分。这个公共的类就是父类,也称为超类或者基类,其他的类就是子类

关键字:extend、super

① 对于父类的非私有属性,子类可以直接访问;
② 对于父类的私有属性,子类需要通过使用super.get()方法访问。

例:Admin类的继承(子类Admin_chi在父类Admin基础上添加了email属性,同时对父类的getAll方法进行重写)

package javaBean;

public class Admin_chi extends Admin{
	private String email;
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email=email;
	}
	public String getAll() {
		//方法的重写,重写的方法权限不能低于父类中的同名方法
        //在子类中如果要调用父类方法,使用super关键字
        //super指父类对象,this指当前类对象
		return super.getAll()+" "+this.email;
	}

}
package app;
import javaBean.Admin_chi;

public class AdminApp {

	public static void main(String[] args) {
		
		Admin_chi adm2=new Admin_chi();
		adm2.setId("1001");
		adm2.setName("小波");
		adm2.setEmail("1846839258@qq.com");
		System.out.println(adm2.getAll());
	}
	
}

 (2)特点:

① 子类比父类强大(子类权限不能低于父类);
② java是单继承,不能进行多继承。但是可以继承多层子类(不建议继承超过3层);
③ 子类继承父类,但是对父类的成员变量是无法直接操作,只能通过父类继承过来的setter和getter方法;

(3)优缺点:

①优点:减少代码量,提高复用率;使类与类之间存在继承关系,是实现多态操作的前提。
②缺点:当一个父类存在多个子类时,如果父类发生变化,那么这些子类会随之一同变化,造成类与类之间的“强耦合”关系。

4.3 多态性

方法重载:方法名称相同但参数不同,使用时系统会根据输入的参数来调用对应的方法。

构造方法也使用了类方法的重载技术:

public Admin() {}
public Admin(String id,String name,String psw,String type) { 
	this.id=id;
	this.name=name;
	this.psw=psw;
	this.type=type;
}

……


 Flag:要成为一个日更选手:)