当前位置: 主页 > JAVA语言

java中面向对象的特征-jsp java对象 js对象

发布时间:2023-05-23 22:07   浏览次数:次   作者:佚名

Java面向对象——封装与继承(访问权限控制、static关键字)

1、什么是封装2、访问权限控制访问修饰符同类同包子类(不同包)其它总结

private

V

X

X

X

除了类内,其它都不可以访问,子类不可以继承

默认修饰符

V

V

X

X

包访问权限,即在同一个包内都是可以访问的

protected

V

V

V

X

在同类,同包都可以访问java中面向对象的特征,继承的子类也可以访问

public

V

V

V

V

对任何对象都是可访问的

        package ooday04;
        //访问控制修饰符的演示
        public class Coo {
            public int a;    //任何类
            protected int b; //本类、派生类、同包类
            int c;           //本类、同包类
            private int d;   //本类
    
            void show(){
                a = 1;
                b = 2;
                c = 3;
                d = 4;
            }
        }
    
        class Doo{ //----------------------演示private
            void show(){
                Coo o = new Coo();
                o.a = 1;
                o.b = 2;
                o.c = 3;
                //o.d = 4; //编译错误
            }
        }
    
        package ooday04_vis;
        import ooday04.Coo;
        public class Eoo { //-----------------演示同包的
            void show(){
                Coo o = new Coo();
                o.a = 1;
                //o.b = 2; //编译错误
                //o.c = 3; //编译错误
                //o.d = 4; //编译错误
            }
        }
      
        class Foo extends Coo{ //跨包继承-------演示protected
            void show(){
                a = 1;
                b = 2;
                //c = 3; //编译错误
                //d = 4; //编译错误
            }
        }

3、static关键字

       //演示静态变量
      class Goo{
           int a;
           static int b;
           Goo(){
               a++;
               b++;
           }
           void show(){
               System.out.println("a="+a+",b="+b);
           }
       }
       
       public class StaticDemo {
           public static void main(String[] args) {
               Goo o1 = new Goo();
               o1.show();
               Goo o2 = new Goo();
               o2.show();
               Goo o3 = new Goo();
               o3.show();
               System.out.println(Goo.b); //常常通过类名点来访问
           }
       }

       //演示静态方法
       class Hoo{
           int a; //实例变量(由对象来访问)
           static int b; //静态变量(由类名来访问)
       
           void show(){ //有this
               System.out.println(this.a);
               System.out.println(Hoo.b);
           }
           static void test(){ //没有this
               //静态方法中没有隐式this传递
               //没有this就意味着没有对象
               //而实例变量a是必须由对象来访问的
               //所以如下代码发生编译错误
               //System.out.println(a); //编译错误
               System.out.println(Hoo.b);
           }
       }
       
       //演示何时设计为静态方法
       class Ioo{
           int a; //对象的属性
       
           //在show()中访问了对象的属性,意味着show()方法与对象有关,不能设计为静态方法
           void show(){
               System.out.println(a);
           }
           //在plus()中没有访问对象的属性,意味着plus()方法与对象无关,可以设计为静态方法
           static int plus(int num1,int num2){
               int num = num1+num2;
               return num;
           }
       }
       
       public class StaticDemo {
           public static void main(String[] args) {
               Hoo.test(); //常常通过类名点来访问
           }
       }

       //演示静态块
       class Joo{
           static{
               System.out.println("静态块");
           }
           Joo(){
               System.out.println("构造方法");
           }
       }
       
       public class StaticDemo {
           public static void main(String[] args) {
               Joo o4 = new Joo();
               Joo o5 = new Joo();
               Joo o6 = new Joo();
               //输出静态块
               //构造方法
              //构造方法
              //构造方法
           }
       }

4、继承的用法5、子类可以继承父类的内容6、何时使用继承

1)是否存在is-a的关系java中面向对象的特征,存在就可以用

2)继承的使用条件

子类是特殊的类型,不代表是父类的角色

子类是父类的扩展,可以包含子类特有的属性和方法,且不能让父类的功能失效