如果在类中的成员没有加修饰符,则被认为是private的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果在类中的成员没有加修饰符,则被认为是private的相关的知识,希望对你有一定的参考价值。
“如果在类中的成员没有加修饰符,则被认为是private的;protected表示继承时子类可以对基类有完全访问权,也就是说,用protected修饰的类成员,对子类公开,但不对其他类公开;”
但我怎么觉得不加修饰符的成员应该是default的呢?谢谢!
JAVA里面一共有四种访问权限修饰词:
什么都不加:被称为友好变量,也称作包访问权限,也就是说包内所有类都能访问
private: 私有变量,只有当前类可以访问
public: 公共变量,所有类都可以访问,无论是在相同的包中,还是不同的包中
protected: 保护变量,继承访问权限,也就是说除了包中的类可以访问之外,其它的包中的继承该类的类可以访问该变量。
希望能帮到你~!仍有疑问可以HI我~! 参考技术A 就是default,只是比protected少了个继承时子类可以对基类有完全访问权的功能,其它和它是一样的。 参考技术B 不加修饰符是defaul的.是包级别的访问.其他包是访问不到的
Java面向对象(OOP)--方法回顾及加深
1.方法回顾及加深
方法一定是定义在类中的,属于类的成员。
1.1 方法的定义
修饰符
- public、static、abstract、final等等都是修饰符,一个方法可以有多个修饰符。例如程序入口 main方法,就使用了public static这个俩个修饰符
- 注:如果一个方法或者属性有多个修饰符,这多个修饰符是没有先后顺序的
返回类型
- 方法执行完如果有要返回的数据,那么就要声明返回数据的类型,如果没有返回的数据,那么返回类型就必须写void.
- 只有 构造方法(构造器) 不写任何返回类型也不写void
【示例】
思考:声明返回类型的方法中一定要出现return语句,那么没有返回类型(void)的方法中,能不能出现return语句?
可以,但没必要,可以用作有时候强行退出方法:不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回 调用函数处。
public static void main(String[] args) {
sayHi();
}
public static void sayHi() {
System.out.println("Say Hi");
return;
}
方法名: 遵守java中标示符的命名规则即可.
参数列表
根据需求定义,方法可以是无参的,也可以有一个参数,也可以有多个参数
异常抛出类型
如果方法中的代码在执行过程中,可能会出现一些异常情况,那么就可以在方法上把这些异常声明并抛出, 也可以同时声明抛出多个异常,使用逗号隔开即可。
【示例】
1.2 注:break和return的区别
return 语句的作用
- (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。
- (2) return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一 致。
- (3) return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回 调用函数处。
break语句的作用
- (1)break在循环体内,强行结束循环的执行(停止最里层的循环,单层循环),也就是结束整个循环过程,不在判断执行循环的条件是否 成立,直接转向循环语句下面的语句。
- (2)当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。
1.3 方法调用
在类中定义了方法,这个方法中的代码并不会执行,当这个方法被调用的时候,方法中的代码才会被一行一行顺序执行。
1.3.1 非静态方法
- 没有使用static修饰符修饰的方法,就是非静态方法. 调用这种方法的时候,是"一定"要使用对象的。因为非静态方法是属于对象的。(非静态属性也是一样的)
【例子】
public class Student {
public static void main(String[] args) {
new Student().sayHi();
}
public void sayHi() {
System.out.println("Say Hi");
return;
}
}
1.3.2 静态方法
- 使用static修饰符修饰的方法,就是静态方法. 调用这种方法的时候,"可以"使用对象调用,也"可以"使用类来调用,但是推荐使用类进行调用,因为静态 方法是属于类的。(静态属性也是一样的)
【例子】
public class Student {
public static void sayHi() {
System.out.println("Say Hi");
return;
}
}
class Test {
public static void main(String[] args) {
Student.sayHi();
}
}
1.3.3 类中方法之间的调用
- 假设同一个类中有俩个方法,a方法和b方法,若a和b都是非静态方法或者都是静态方法,则相互之间可以直接调用,否则不可以之间调用(静态方法不能调用非静态方法,非静态方法可以调用静态方法)。
另外:在同一个类中,静态方法内不能直接访问到类中的非静态属性。
总结:
- 类中方法中的调用,两个方法都是静态或者非静态都可以互相调用,当一个方法是静态,一个方法是非静态的时候,非静态方法可以调用静态方法,反之不能。
- 静态方法可以调用静态的方法和属性,非静态方法可以任意调用。
1.4 调用方法时的传参
1.4.1 形参和实参
【例子】
public static void main(String[] args) {
test(5);
}
public static void test(int a) {
System.out.println("a = " + a);
}
- 参数列表中的a是方法test的形参(形式上的参数)
- 调用方法时的x是方法test的实参(实际上的参数)
注意:
形参的名字和实参的名字都只是一个变量的名字,是可以随便写的,我们并不关心这个名字,而是关心变量的类型以及变量接收的值。
1.4.2 值传递和引用传递
- 调用方法进行传参时,分为值传递和引用传递两种。
- 如果参数的类型是基本数据类型,那么就是值传递。
- 如果参数的类型是引用数据类型,那么就是引用传递。
- 值传递是实参把自己变量本身存的简单数值赋值给形参。
- 引用传递是实参把自己变量本身存的对象内存地址值赋值给形参。
- 所以值传递和引用传递本质上是一回事,只不过传递的东西的意义不同而已。
【示例:值传递】
【示例:引用传递】
public class Test {
public static void main(String[] args) {
Student s = new Student();
System.out.println("before: name = " + s.getName()); //null
changeName(s);
System.out.println("after: name = " + s.getName()); //tom
}
public static void changeName(Student s) {
s.setName("tom");
}
}
class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
以上是关于如果在类中的成员没有加修饰符,则被认为是private的的主要内容,如果未能解决你的问题,请参考以下文章