在Java和c#中如果不写访问修饰符,类和类成员默认的是啥访问修饰符?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java和c#中如果不写访问修饰符,类和类成员默认的是啥访问修饰符?相关的知识,希望对你有一定的参考价值。
如题
参考技术A 省略类的访问修饰符,默认为internal省略类成员的访问修饰符,默认为private 参考技术B 在java中不写访问修饰符就是包内可见,不是private,private是本类可见
包内可见是同一个包中的所有类都可见,无论类、类成员变量、类方法都是这样的
c#不知道
面向对象编程(OOP)————修饰符
一.类的修饰符
Java语言中的权限修饰符主要包括private、public和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。如果一个类的成员变量或成员方法被修饰为private,则该成员变量只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的。如果将类的成员变量和成员方法的访问权限设置为public,则除了可以在本类使用这些数据之外,还可以在子类和其它包中的类中使用。如果一个类的访问权限被设置为private,这个类将隐藏其内的所有数据,以免用户直接访问它。如果需要使类中的数据被子类或其他包中的类使用,可以将这个类设置为public访问权限。如果一个类使用protected修饰符,那么只有本包内该类的子类或其他类可以访问此类中的成员变量和成员方法。
这麽看来,public和protected修饰的类可以由子类访问,如果子类和父类不在同一包中,那么只有修饰符为public的类可以被子类进行访问。如果父类不允许通过继承产生的子类访问他的成员变量,那么必须使用private声明父类的这个成员变量。
默认修饰符:只有一个包内的其他类和子类可以对该类进行访问,这类修饰符视为默认修饰符。
1.修饰符的特点:
(1)public(公共的):无限制
(2) protected (保护的):默认的、本包内
(3)private(私有的):类内部、常用来修饰属性,再开放公共的方法
用法:在类、属性、方法前面
2.成员变量的规范:
(1)设成private
(2)POJO简单JAVA对象:只有属性和getter、setter方法,没有业务逻辑。
实战 : 构造一个汽车Car的类
1 package org.hanqi.pn0120; 2 3 //汽车 4 public class Car { 5 6 //颜色 7 private String yanse; 8 9 //品牌 10 private String pinpai; 11 12 //油箱容量 13 private double youxiangrl=40; 14 15 //当前油量 16 private double dangqianyl=0; 17 18 public double getDangqianyl() 19 { 20 return this.dangqianyl; 21 } 22 23 //加油 24 public void jiaYou(double youliang) 25 { 26 if(youliang<0) 27 { 28 System.out.println("不要偷油"); 29 } 30 else if(this.dangqianyl+ youliang>this.youxiangrl) 31 { 32 //本次加油量 33 double bcyl=this.youxiangrl-this.dangqianyl; 34 35 this.dangqianyl=this.youxiangrl; 36 37 System.out.println("油太多了,已经加满了,这次加了"+bcyl+"升油"); 38 } 39 else 40 { 41 this.dangqianyl+=youliang; 42 43 System.out.println("这次加了"+youliang+"升油"); 44 } 45 46 } 47 // private double youhao=; 48 49 private double xingshizlc=0; 50 51 public double getXingshizlc() 52 { 53 return this.xingshizlc; 54 } 55 56 //行驶 57 public void xingshi(double xingshilc,double youhao) 58 { 59 // 60 if(this.dangqianyl<=0) 61 { 62 System.out.println("车没有油,怎么开车"); 63 64 return; 65 } 66 67 if(xingshilc<0||youhao<0) 68 { 69 System.out.println("不可能这麽开车"); 70 } 71 else 72 { 73 //油耗 74 double dangqyh=xingshilc*youhao/100; 75 76 this.dangqianyl-=dangqyh; 77 78 //验证当前油量 79 //this.dangqianyl=this.dangqianyl>0?this.dangqianyl:0; 80 81 if(this.dangqianyl<0) 82 { 83 this.dangqianyl=0; 84 85 System.out.println("你是推着车吗?"); 86 } 87 88 this.xingshizlc+=xingshilc; 89 90 System.out.println("本次行驶了"+xingshilc+"公里"); 91 } 92 } 93 94 public String getYanse() { 95 return yanse; 96 } 97 98 public void setYanse(String yanse) { 99 this.yanse = yanse; 100 } 101 102 public String getPinpai() { 103 return pinpai; 104 } 105 106 public void setPinpai(String pinpai) { 107 this.pinpai = pinpai; 108 } 109 110 public double getYouxiangrl() { 111 return youxiangrl; 112 } 113 114 public void setYouxiangrl(double youxiangrl) { 115 this.youxiangrl = youxiangrl; 116 } 117 118 public Car(String pinpai, double youxiangrl) { 119 super(); 120 this.pinpai = pinpai; 121 this.youxiangrl = youxiangrl; 122 } 123 124 125 //设计模式---单例模式(单态模式) 126 127 //静态 static 128 129 130 //main方法 131 public static void main(String[] args) 132 { 133 134 Car myBenchi=new Car("奔驰",50); 135 136 System.out.println("品牌="+myBenchi.getPinpai()); 137 138 System.out.println("油箱容量="+myBenchi.getYouxiangrl()); 139 140 myBenchi.xingshi(200, 13); 141 142 myBenchi.jiaYou(30); 143 144 myBenchi.jiaYou(30); 145 146 System.out.println("当前油量="+myBenchi.getDangqianyl()); 147 148 myBenchi.xingshi(300, -15); 149 150 System.out.println("当前油量="+myBenchi.getDangqianyl()); 151 152 myBenchi.xingshi(200, 13); 153 154 System.out.println("当前总里程="+myBenchi.getXingshizlc()); 155 156 System.out.println("当前油量="+myBenchi.getDangqianyl()); 157 } 158 159 160 }
以上是关于在Java和c#中如果不写访问修饰符,类和类成员默认的是啥访问修饰符?的主要内容,如果未能解决你的问题,请参考以下文章