目录
封装
概念:
包装
优点:
1.保护内部
2.降低耦合度
3.方便使用
访问权限修饰符
public 公共的 当前项目下
protected 受保护的 当前包中或者继承关系中
不写 默认的 当前包中
private 私有的 当前类中
标椎类
私有化所有属性,无参构造,全参构造,get和set方法,toString方法
继承
概念:
子类继承父类的所有属性和方法,构造函数除外
注意:
1.一个类只能有一个直接父类
2.是否存在继承关系
3.所有类都是Object的子类
4.一个类没有明确写出继承的类,那么默认继承Object类
5.创建子类对象时一定会创建父类对象,子类构造函数中默认调用父类的无参构造函数,子类构造函数中必须调用父类的构造函数
语法:
访问权限修饰符 class 子类 extends 父类名{
属性
方法
构造函数
}
super:
含义:谁调用super所在的方法,super就代表谁的父类
使用场景:
场景1:调用父类的构造函数
语法:super(实参列表);
场景2:当父类的属性名与子类的属性名相同时,使用super进行区分
super.属性名 父类的属性
属性名 子类的属性
场景3:子类方法名如果和父类的方法名相同时,形参列表相同,如果区分
super.方法名(实参列表); 父类的方法
方法名(实参列表); 子类特有的方法
多态
概念:
一个事物的多种形态
物的多态:
子类对象转父类对象,自动转型
注意:
1.子类对象转换为父类对象后,无法调用子类特有的属性和方法
父类对象转子类对象:强制转换
注意:强制转换可能出现异常
instanceof:
作用:
判断该对象是否属于该类
注意:
该对象必须和该类存在继承关系
语法:
父类对象或子类对象 instanceof 子类名
事的多态
1.重载
要求:同一个类中,方法名一致,形参列表不同
2.重写
要求:
1.继承关系中
2.方法名相同,形参列表页相同,返回值类型也相同
3.子类方法的访问权限修饰符不能小于父类的访问权限修饰符
注意:
1.子类重写父类方法后会覆盖父类原有的方法,此时子类转换为父类对象调用重写的方法,执行的还是子类重写后的方法.
面试题:
请问重载与重写的区别:
答:
1.发生关系的位置不同,重载发生在一个类中,重写发生在继承关系中
2.访问权限修饰符的要求不同,重载没有要求,重写要求子类方法的权限不能小于父类的
3.返回值类型的要求不同,重载没有要求,重写要求子类返回值类型必须与父类相同
4.方法名要求相同,都要求方法名一致
5.形参列表要求不同,重载要求形参列表不一致,重写要求形参列表一致
今天给大家带来一个有趣的小游戏,模拟彩票31选7:
思想:
1.随机生成7个[1,31]的数,并且不能重复.用来模拟中奖号码
2.让用户输入7个数,并且不能重复,并且范围在[1,31]之间
3.判断中奖号码与用户输入的号码的相同个数
4.根据不同的相同个数,返回不同的奖品或等级
5.公布中奖个数和本期中奖号码
实现:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int[] wo=new int[7];
int[] zhongjiang=new int[7];
Random random=new Random();
for (int i = 0; i < zhongjiang.length; i++) {
int jh = random.nextInt(31)+1;
boolean issave = issave(zhongjiang, jh);
if (!issave){
zhongjiang[i]=jh;
}else{
i--;
}
}
// print(zhongjiang);
for (int i = 0; i < 7; i++) {
System.out.println("请输入第"+(i+1)+"个数");
int w = scanner.nextInt();
boolean issave = issave(wo, w);
if (w<32&&w>0){
if (issave){
System.out.println("该数字重复输入,无效");
i--;
}else {
wo[i]=w;
}
}else {
System.out.println("数字不在范围");
i--;
}
}
int haomashu = iszhongjiang(zhongjiang, wo);
result(haomashu);
print(zhongjiang);
}
public static boolean issave(int[] a,int b){
for (int i = 0; i < a.length; i++) {
if (a[i]==b){
//相等
return true;
}
}
return false;
}
public static void print(int[] a){
System.out.print("本期的中奖号码为:\t");
for (int i : a) {
System.out.print(i+"\t");
}
}
public static int iszhongjiang(int[] a,int[] b){
int flag=0;
for (int i : a) {
for (int i1 : b) {
if (i==i1){
flag++;
}else {
continue;
}
}
}
System.out.println("本次一共押对"+flag+"个号码");
return flag;
}
public static void result(int a){
switch (a){
case 7:
System.out.println("一等奖");
break;
case 6:
System.out.println("二等奖");
break;
case 5:
System.out.println("三等奖");
break;
case 4:
System.out.println("四等奖");
break;
case 3:
System.out.println("五等奖");
break;
default:
System.out.println("谢谢惠顾,欢迎下次光临~");
}
}
本文介绍了Java中的封装概念及其优点,包括保护内部数据、降低耦合度和方便使用。讲解了访问权限修饰符的使用,如public、protected、默认和private。此外,详细阐述了继承的概念,注意点和语法,以及super关键字的使用场景。接着讨论了多态性,包括物的多态和事的多态,如重载和重写。文章还提供了一个模拟彩票31选7的游戏作为示例,展示了如何运用这些概念。
335

被折叠的 条评论
为什么被折叠?



