Java之访问权限控制符以及结合继承体系引发的注意事项

访问修饰符的作用域:

private:可以定义方法或者属性,定义的方法和属性不能被外部的类所访问(包括子类)。

default:可以在本包中的任意地方访问。

protected:保护,不同包中的非子类不能访问。(能访问的成员包括相同包以及该类的任意子类)

public:公共的,都可以访问,不受任何限制。

Java继承&访问修饰符结合使用引发的大混乱

1.子类重载方法的权限是否允许小于父类定义?其中,private<default<public

不允许,注:Java中允许Parent  parent=new Children();的多态表现形式,若此时允许子类方法权限小于父类,则会出现变量申明为Child类型时不允许访问,申明为Parent时则允许访问,这很显然逻辑不通。

2.如果在父类中申明private方法,那么在子类中使用default权限算是覆写吗?

不是覆写,此时表示重新定义。

3.父类与子类同名属性的覆盖问题

参考链接:http://gaolixu.iteye.com/blog/363709

a.同名变量访问权限相同:

变量的值取决于我们定义的变量的类型,而不是创建的对象的类型(其中,private修饰的变量不予考虑),即:

Parent parent=new Parent();//父类的值

Parent childOfParent=new Child();//父类的值

Child child=new Child();//子类的值

b.子类访问权限的修改不影响最终结果。

扩展阅读:

Java之获取Class对象及两种方式实例化对象的过程分析

来自为知笔记(Wiz)

时间: 2024-11-29 01:17:16

Java之访问权限控制符以及结合继承体系引发的注意事项的相关文章

2016年6月11日——访问权限控制符

今天我们来探讨一下访问权限控制符. 使用场景一:攻城狮A编写了ClassA,但是他不想所有的攻城狮都可以使用该类,应该怎么办? 使用场景二:攻城狮A编写了ClassA,里面有func1方法和func2方法,但是他只想提供func1给别的攻城狮使用,应该怎么办? 此时,应该使用Java当中的访问权限控制符:1.默认访问权限 2.public 3.private 4.protected 注意,上述四种访问权限,只有默认访问权限和public能够用来修饰类.修饰类的变量和方法四种权限都可以.(本处所说

java:访问权限

访问权限四大类:权限从大->小 1.public:   公共权限 2.protected:  受保护权限 3.default: 包级别访问权限/默认权限 4.private:   私有权限 以public为例,使用方法如下: public class Test{ public int i; public void fun(){ } } public ->在同一个包或不同的包中的类可以自由访问. 可以修饰类.成员变量和成员函数 Test.java class Test { public stat

Java类方法访问权限

1.权限解析 Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符. private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”.被其修饰的类.属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问. default:即不加任何访问修饰符,通常称为“默认访问模式“.该模式下,只允许在同一个包中进行访问. protect: 介于public 和 private 之间的一种访问修饰符,

C++的三种访问权限与三种继承方式

三种访问权限 我们知道C++中的类,有三种访问权限(也称作访问控制),它们分别是public.protected.private.要理解它们其实也很容易,看下面了一个例子. 父类: class Person { public: Person(const string& name, int age) : m_name(name), m_age(age) { } void ShowInfo() { cout << "姓名:" << m_name <&l

java中访问权限修饰符解析

访问权限控制修饰符:public protected 默认(default) private this static super final abstract 其中abstract这个修饰符脾气很大,这个修饰符不能与static private final共存对于final,表示最终,final修饰变量,那么这个变量第一次被赋值后,就不能被再次赋值,也可以把它理解为常量,注意内存空间里面的常量池...这是方法区里面一块特殊的内存空间...final修饰类,表示这个类是最终类,也就是说,不能有子类

java中访问权限修饰符

java中的访问权限修饰符共有四种,分别为private.default.protected.public,它们的访问权限依次升高,private只能被本类所调用,default(不写的话默认为default)可以被同一个包下的所有类所调用,protected既可以被同一个包下的所有类所调用,也能被不同包下的子类所调用(即必须要有继承关系),而public则为公开的,项目下所有包的所有类都可进行调用. 代码测试如下: , 经测试结果如下: 除private类报错外,其余各访问权限修饰词均在本包其

Thinking in java Chapter6 访问权限控制

访问权限控制的等级,从最大权限到最小权限:public proteced 包访问权限 private 6.1 包:库单元 public class FullQualification { public static void main(String[] args) { java.util.ArrayList list = new java.util.ArrayList<>(); } } import java.util.ArrayList; public class SingleImport

java 类访问权限

Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符. private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”.被其修饰的类.属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问. default:即不加任何访问修饰符,通常称为“默认访问模式“.该模式下,只允许在同一个包中进行访问. protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保

java的访问权限

java有4种访问权限,3种访问权限修饰符:public,protected,private,还有一个不带任何修饰符.默认的default. 下面从本类,同包,(其他包)子类,其他包(非子类)这四个方面来对比: public:公共的,权限最大的访问修饰符,被修饰的类.属性.方法可以跨类跨包访问: protected:受保护的,不可以修饰类,可以修饰属性和方法,被修饰的属性和方法能被同一包里的类访问(可以在本类.同包中访问),也能被该类的子类访问,即使父类和子类不在同一个包中: default:默