目录
day 6
匿名类
- 无名字的类称为匿名类
- 只调用一次方法或者作为参数传递的情况,比较适合匿名类,调用结束以后就是垃圾,可以被垃圾回收。
封装
- 隐藏对象的属性和实现细节
- 好处
- 隐藏细节
- 提高安全性
- 提高复用性
- 原则
- 隐藏不需要对外提供的内容
- 属性隐藏,提供公共方法对其访问
private
- 属性私有
- 设置set和get实现修改和读取
面向对象特征
- 封装、继承、多态
类和对象的区别和联系
- 类是对象的抽象,对象是类的具体
- 对象是具有类类型的变量
- 类是数据以及这些数据上的操作封装在一起
day 7
构造
- 和类名相同,无返回
- 两个构造
- Person p1=new Person(a);
- p1=new Person(b);
- 此时开辟了一个新空间,把旧空间变成垃圾回收了
- 构造函数无返回值(不需要void 或者int),可以加public也可以不加。
- 加了public,包其他类都能构造
- 不加public,包内类可以构造它
-
- public class和class的区别也是一样的
- 加了public,包其他类都能构造
static
- 静态变量
- 静态变量一改全改
- 将num类型设置为static类型,创建新类型
-
- 未赋值变量前,static类型的int默认为0
- 创建完新对象,先前对象内的static类型变量一同修改
-
- 静态方法
- 静态方法内没有this指针
- 静态方法只能访问静态的成员变量和成员方法
- 类中的静态方法和变量可以直接用 (类名.名称)的方式调用
-
public class
- 公共类
- 同一个class内的static方法,可以直接调用方法
- 同一个package中的公共类的static内容可以直接引用
- 不同package加上 包名.类名.变量名
-
- 当然,所有的类名都可以用对象名代替
测试
- 猜数字,输入数字。
- 超出范围,重新输入。
- 输入数字大了,提示大了并缩小范围;输入数字小了,提示小了并缩小范围。
-
import java.util.Scanner; public class GuessNum { /*猜数字,输入数字 * 超出范围,重新输入。 * 输入数字大了,提示大了并缩小范围;输入数字小了,提示小了并缩小范围。 * */ public static void main(String[] args) { System.out.println("请输入数字(1-1000):"); Scanner sc=new Scanner(System.in); int num=sc.nextInt(); int min=1,max=1000; while(num<min||num>max) { System.out.printf("超出范围,请重新输入,范围(%d-%d):\n",min,max); num=sc.nextInt(); } GuessNumTool obj=new GuessNumTool(num); while(true){ System.out.printf("输入数字,范围(%d-%d):\n",min,max); num=sc.nextInt(); while(num<min||num>max) { System.out.printf("超出范围,请重新输入,范围(%d-%d):\n",min,max); num=sc.nextInt(); } obj.guess(num); if(obj.flag==1) { max=num; }else if(obj.flag==-1) { min=num; }else if(obj.flag==0) { break; } } sc.close(); } } class GuessNumTool{ private int num; public int flag; public GuessNumTool(int a){ num=a; } public int guess(int a) { if(a>num) { System.out.println("数字大了,请重新输入"); flag=1; return num; }else if(a==num) { System.out.printf("你猜对了,数字是%d\n",num); return flag=0; }else { System.out.println("数字小了,请重新输入:"); flag=-1; return num; } } }