面向对象2
前言
1、 假设数据库存有如下数据{“苹果”,“橘子”,“芒果”,“哈密瓜”,“柚子”,“牛油”,“车厘子”,“鹰嘴桃”,“阳光提”},请设计一个类用于对数据操作。如:查询数据中是否有西梅 /** *设计类 */ public class fruit(){ String name; String size; String color; //这里涉及到静态static static String [] = {"",""} // 判断是否有水果 public boolean findIsFruit(String name) { boolean flag = true; //遍历数组 for (int i = 0; i < f.length; i++) { if (f[i].equals(name)){ System.out.println("仓库里有"+name); break; }else{ System.out.println("仓库中没有"+name); flag = false; //这里一定需要加入break 不然会一直循环 break; } } return flag; } public Fruit() { }//默认构造函数 public Fruit(String name, String color, double price) { this.name = name; this.color = color; this.price = price; } } /** *测试类 */ public static void main(String[] args) { Fruit fruit = new Fruit("苹果","red",38); // 调用Fruit类中查询仓库中是否有该水果的方法,需要传入参数 boolean res = fruit.findIsFruit("西梅"); System.out.println(res); }
1.构造方法
构成方法重载的条件是什么?
1.方法名称必须相同。
2.参数列表必须不同(个数不同、或类型不同、参数类型排列顺序不同等)。
3.方法的返回类型可以相同也可以不相同。
4.仅仅返回类型不同不足以成为方法的重载。
5.重载是发生在编译时的,因为编译器可以根据参数的类型来选择使用哪个方法。
构造方法的重载的条件是什么?
如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
推荐的使用方式?
无论是否使用,都书写无参数构造方法,和带参数构造方法。
public class fruit(){ String name; String size; String color; static String [] = {"",""}; //带参数的构造放法 public fruit(String name,String size,){ this.name=name; this.size=size; this.color=color; } //需要写一个无参的构造方法 public fruit(){ } }
构造方法有什么用?
- 给属性赋值
- 创建对象(new)
2.封装、继承、多态、抽象类
2.1封装
Q1:是什么?
找对象,掉方法 对象:new的对象 方法:对数据的操作
Q2:步骤
class student{ //1.private关键字来修饰成员变量(限制队属性的访问) private int id; private String name; private String sex; private String addr; //私有只能在本类里使用 不能调用 对信息进行的隐藏 //需要暴露出来 //2.使用public修饰getter和setter方法【Alt+Insert】 public void setName(String name){ this.name = name; } public String getName(){ return name; } }
Q3:有哪些体现?
1、将代码抽取到方法中,这是对代码的一种封装
2、将属性抽取到类当中,这是对数据的一种封装
隐藏实现细节,仅对外暴露公开的访问方式
封装的好处:
1、提高了代码的安全性
2、提高了代码的复用性
JavaBean
当一个类里面的所有成员全部被私有化,而且提供了get和set方法,我们把这种类叫做JavaBean。
2.2对象
是什么?
类里面具体的属性
另外:
面向对象之前都在一个类里面,左边是代码 右边模拟用户