权限修饰符、接口及try关键字的理解

一.权限修饰符

概括:总是看见有不同的权限修饰符去修饰一些东西,所以近期对权限修饰符做了一些学习。

1.权限修饰符包括:public、protected、默认的、private

2.权限修饰符修饰的方法的使用范围;

本类同包下的子类和无关类不同包下的子类不同包下无关类
private可调用nonono
默认修饰符可调用可调用nono
protected可调用可调用可调用no
public可调用可调用可调用可调用

参考于:https://blog.csdn.net/yjh728/article/details/80632391
部分示例如下:

package mm.nn.com;
//这是方法类
public class QuanDemo {
    public QuanDemo Quan;

    private void Quanshow(){
        System.out.println("show");
    }

    void Quanshow2(){
        System.out.println("show2");;
    }

    protected void Quanshow3(){
        System.out.println("show3");
    }

    public void Quanshow4(){
        System.out.println("show4");
    }

    public void AllShow(){
        QuanDemo s=new QuanDemo();
        s.Quanshow();//idea未报错
        s.Quanshow2();//idea未报错
        s.Quanshow3();//idea未报错
        s.Quanshow4();//idea未报错
    }


}

package la;
//这是测试类
import mm.nn.com.QuanDemo;

public class QuanTest extends QuanDemo {
  public static void main(String[] args) {
      QuanTest a=new QuanTest();
      a.Quanshow4();
      a.Quanshow3();
     /* a.Quanshow2();  //idea报错,由默认修饰符修饰
      a.Quanshow();*/  //idea报错,由private修饰
      a.AllShow();

  }
}

二.对接口的学习

1. 接口是一个抽象,无法直接实例化,但可以像抽象类一样使用多态来间接实例化,类使用implements关键字来实现接口

2. 接口中成员变量默认是静态的常量,默认修饰符public static final

3. 接口中成员方法只能是抽象方法,默认修饰符public abstract

4. 接口无构造方法,因为接口不是一个类,构造方法是方法名和类名相同的方法,故接口无构造方法

5. 类与接口可单实现也可多实现,具体类实现接口要重写所有抽象方法,也就是接口的所有方法

package mm.nn.com;

interface Eat{
 /*public eat(); 接口方法名不能与接口名相同 */
    public void eat();//事实上是public abstract void eat();
    public static final int ohhuo=0;
    public  void jump();
}

class EatDemo{
    public void eat(Eat a){
        a.eat();
    }
}

class Cat implements Eat{  //这是具体类实现接口
    @Override
    public void eat() {
        System.out.println("猫大师爱吃鱼");
    }

    @Override
    public void jump() { //必须实现接口所有的方法
        System.out.println("喵喵使用了黑魔法让你跳高去了");
    }
}

abstract class Student implements Eat{  //抽象方法实现接口,感觉好些
    public abstract void eat();
}

public class Interface520 {
    public static void main(String[] args) {
        Eat e=new Cat(); //直接使用多态
        e.eat();
        e.jump();

        EatDemo eatDemo=new EatDemo();
        eatDemo.eat(new Cat());//匿名对象 传过去相当于 Eat a=new Cat();
        // 多说一句,这里的匿名对象用完后就被GC回收了,(GC是垃圾回收器,在疯狂Java讲义第二版学到的)

    }
}
结果是:
猫大师爱吃鱼
喵喵使用了黑魔法让你跳高去了
猫大师爱吃鱼

三.对try关键字的理解

此处以代码为例:

package la;

public class TestTry {
    public static void main(String[] args)  {
        try {
            System.out.println("try");
            int c = 5 / 1;
            System.out.println(c);
            System.out.println("heihei");
        } catch (ArithmeticException a) {
            System.out.println("catch");   //try语句有错就会执行该语句,无错则跳过
        }
        //try语句有错就会执行该语句
        finally {
            System.out.println("finally");//try语句有错无错都会执行该语句
        }

    }
}
/*结果是:
try
5
heihei
finally
*/
package la;

public class TestTry {
    public static void main(String[] args)  {
        try {
            System.out.println("try");
            int c = 5 / 0;     //此处代码是错的,但在try语句中可以存在,但是try代码块中以后的语句将不再执行
            System.out.println(c);
            System.out.println("heihei");
        } catch (ArithmeticException a) {
            System.out.println("catch");   //try语句有错就会执行该语句,无错则跳过
        }
        //try语句有错就会执行该语句
        finally {
            System.out.println("finally");//try语句有错无错都会执行该语句
        }

    }
}
/*结果是:
try
catch
finally
*/

try——catch
try——finally
try——catch——finally
catch和finally语句不能同时省略

补充:
1.对字符串的遍历:使用length()和charAt()方法

package mm.nn.com;

public class TryDebug {
    public static void main(String[] args) {
        String name="xixixiHA";
        for(int i=0;i<name.length();i++){  //length方法只能在方法体里用应该,因为我在方法体外用报错
            System.out.print(name.charAt(i)+"  .  ");  // 拿到字符串的字符使用charAt()
        }
        System.out.println();
        System.out.println("-----------");
        NiuMa();
    }



    public static void NiuMa(){
        String name="heheiHHA";
        for(int i=0;i<name.length();i++){  //length方法
            System.out.print(name.charAt(i)+"  .  ");
        }
    }

}
输出结果:
x  .  i  .  x  .  i  .  x  .  i  .  H  .  A  .  
-----------
h  .  e  .  h  .  e  .  i  .  H  .  H  .  A  .  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值