JAVA第二周

面对对象

面向对象中的两个核心概念:
  1. 类:对一类具备相同特征(属性行为)事物的抽象描述;
  2. 对象:类的一个实例;
类的成分
  • 属性—>变量

用于描述类的静态信息,表示类的数据。
修饰符 数据类型 变量名 = 默认值

  • 行为—>方法

类中另一个组成部分称为行为,以方法(函数)的形式在java中。
修饰符 返回值类型 方法名(参数){
– 执行体
}

对象创建
对象即对类的具象化,类的一个实列

– Student s = new Student(); – (new一个对象)

方法的分类
  • 无参数无返回值
public void Student(){
}
```java
- 无参数有返回值
```java
public String names(){
	return " 姓名";
}
```java
- 有参数无返回值
```java
public void log(String msg){
 System.out.println(msg);
}
  • 有参数有返回值
public int max(int a,int b){
	return a>b ? a : b ;
}
方法调用

new一个对象

  • Student s = new Student;
    引用对象.方法名(实参);
  • s.max(1,2);
构造器

及构造方法,构造函数,构造器;对象创建时完成对于对象的相关属性初始化操作;减少方法对于参数的依赖。

修饰符 类名称(参数){

  • 执行体
    }
  1. L构造器的名称必须跟类名称一致 。(alt+/) 快捷键
  2. 构造器不能包含任何类的返回值 (包括void)。
访问修饰符
  • defualt (空白)
  • private 私密的; 修饰的的元素,只能够在当前类中被访问。
  • protected 只能在同一个包中。或者跨包的子类中被访问。
  • public 可以在同一个项目中 任意包访问。
    – 类一般使用public修饰
    –属性一般使用private修饰
    –方法一般使用public修饰

封装

Setter&Getter方法

类中的属性设置为private后,外界无法访问,但是可以通过提供公开的方法对这些私有的属性进行访问。让外界访问方法避免直接让外界访问属性

  • 自动生成 :shift+alt+s SetterAndGetter 。
this关键字

this在一个类中用于表示-当前对象-。 this一般用于一个类的成员方法。

横向关系

  1. 依赖关系
public class Cat{
public boolean catchMouse(Mouse m){
	return false;
	}
}
  1. 关联关系
  2. 聚合关系
  3. 组合关系
public class Dept{
    
    private int dno;
    private String dname;
    private String tel;
    
    //setter/getter ...
}
public class Emp{
	private int eno;
    private String ename;
    private double sal;
    //员工关联部门
    private Dept dept;
    
    //setter/getter ...
}
纵向关系
继承

继承及是由一个类从另一个通过extends关键字继承,被继承的类称为"父类",继承的类称为"子类"。继承可以使得类的 (拓展性提高,减少重复代码 )的编写。

-修饰符 class 子类 extends 父类 {
}

继承的优点
  1. 子类可以直接通过对象调用父类中的非私有元素
  2. 子类还可以在父类的基础上拓展新的功能
继承的注意事项
  • 子类只能继承父类的属性和方法,不能继承构造器
  • 子类对象构造之前会执行父类的构造器
  • 一个父类可以存在多个子类,但是一个子类只能存在一个父类
  • Java不允许多继承,但支持多重继承
  • 被protected修饰的元素可以在子类中被访问,即便父类和子类不在同一个包
super关键字

super关键字用于在子类中调用父类的元素:

  • 构造器
  • 属性
  • 方法
电商系统的商品库存管理
管理类
public class SangPingPlus {
	private ShangPing[] list;
	private int  index;
	
	public SangPingPlus() {
		list = new ShangPing[100];
	}
	//添加所有商品
	public void add(ShangPing s) {
		list[index++] = s;
	}
	//查询指定价格范围类的商品
	public void showMoney(int money) {
		for(int i = 0;i<list.length;i++) {
			ShangPing s = list[i];
			if(s !=null&&s.getMoney()<= money) {
				s.showAll();
			}
		}
	}
	//根据编号查询商品信息并显示
	public int showId(int id) {
		for(int i = 0;i<list.length;i++) {
			ShangPing s = list[i];
			if(s!=null&&s.getId() == id) {
				return i ;
			}
		}
		return -1;
	}
	//根据编号修改商品的单价和库存
	public void upDate(int id,int money,int kucun) {
			int i = showId(id);
			int z = showId(id);
			if(i == -1) {
				System.out.println("为找到指定编号的商品");
		}else {
			list[i].setMoney(money);
			list[z].setKucun(kucun);
			System.out.println("修改成功");
		}
	}
	//显示所有商品信息
	public void allId() {
		for(int i = 0;i<list.length;i++) {
			ShangPing s = list[i];
			if(s!=null) {
				s.showAll();
			}
		}
	}
	//查询所有库存低与指定数的商品信息
	public void showKucun(int kucun) {
		for(int i = 0;i<list.length;i++) {
			ShangPing s = list[i];
			if(s!=null&&s.getKucun()< kucun) {
				s.showAll();
			}
		}
	}
}
实体类
public class ShangPing {
		private int id;
		private String names;
		private String leibie;
		private int money;
		private int kucun;
		private String scd;
		public ShangPing() {
		}
		
		public ShangPing(int id, String names, String leibie, int money, int kucun, String scd) {
			super();
			this.id = id;
			this.names = names;
			this.leibie = leibie;
			this.money = money;
			this.kucun = kucun;
			this.scd = scd;
		}

		public int getId() {
			return id;
		}
		public void setId(int id) {
			this.id = id;
		}
		public String getNames() {
			return names;
		}
		public void setNames(String names) {
			this.names = names;
		}
		public String getLeibie() {
			return leibie;
		}
		public void setLeibie(String leibie) {
			this.leibie = leibie;
		}
		public int getMoney() {
			return money;
		}
		public void setMoney(int money) {
			this.money = money;
		}
		public int getKucun() {
			return kucun;
		}
		public void setKucun(int kucun) {
			this.kucun = kucun;
		}
		public String getScd() {
			return scd;
		}
		public void setScd(String scd) {
			this.scd = scd;
		}
		public void showAll() {
			System.out.println(id+"\t"+names+"\t"+leibie+"\t"+money+"\t"+kucun+"\t"+scd);
		}
}
实现类
public class SSTest {
	public static void main(String[] args) {
		SangPingPlus sp = new SangPingPlus();
		
		sp.add(new ShangPing(1, "老坛酸菜", "统一", 10, 1200,"武汉"));
		sp.add(new ShangPing(2, "红烧牛肉面", "康师傅", 4, 1000,"武汉"));
		sp.add(new ShangPing(3, "藤椒", "统一", 5, 500,"武汉"));
		sp.add(new ShangPing(4, "香菇顿蘑菇", "统一", 3, 50,"武汉"));
		sp.add(new ShangPing(5, "爆辣", "康师傅", 2, 100,"武汉"));
		
		sp.allId();
		System.out.println("============================");
		sp.upDate(1, 4,1000);
		System.out.println("============================");
		sp.allId();
		System.out.println("============================");
		sp.showKucun(500);
		System.out.println("============================");
		sp.showMoney(5);
	}
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值