一、访问控制权限:
(1)public:访问接口;后面的成员声明适用于所用人,对象实例化之后,都可以访问;
class parent{
public void teach(){
}
}
(2)private:不能接触;除了本类 内部,其他对象是不能够直接访问的,继承也不行;
(3)protected:只有继承该类的对象才能访问;
(4)声明前面什么也也不加:只有在同一个包下面的类型才能访问;
注意:所有借口默认的声明都是public;
protected 友元函数
同一个包下:子类可以访问这个方法
在不同的包下:子类不能访问,本身类在new 之后也是不能访问的;
二、向上转型:
对于一个基类和一个派生类,类继承的画法是从上到下,再逐渐向下扩展,由于类转换的方向是从派生类指向基类,所以叫“向上转型”;
个人理解:作为一个基类和派生类,派生类包含基类的所有public,protected,想让派生类使用的东西,所以将派生类缩小(转换)成基类,使用基类的方法是完全可以,但是基类转换成派生类(向下转型)就存在很大的风险了;
public class Child extends Parent{ public static void main(String[] args) { Child child = new Child(); //向上转型 调用父类的方法 child.print(); } } class Parent{ public void print(){ System.out.println("print dialog"); } }
三、final:大概指的是这个东西不能够改变
final修饰:数据,方法,类
(1)、修饰数据:
a、编译器常数,永远不会改变,运行期间初始化的值,希望他永远不会被程序去改变;
final int a = 1;//类里面,表示a是不能否改变的常数
static final int a = 1;//类里面,只会加载一次,由于没有被public 修饰,所以只能在同一个包下面的类使用;
public static final a = 1;和上面一样,只是加了一个public,所有能被所有的类使用;
// 语法中,被static final修饰的常量名字都要大写
b、修饰一个引用变量:
对象的引用地址不能改变,意思就是我们不能给一个引用变量和重新赋予一个新的引用地址,但是引用变量的内部如果有8种基本数据类型的情况,内部是可以改变的,
(2)、final 修饰方法:表示这个方法不希望被子类重写,保护好原有的意思;被private 修饰的放在再编译期间会自动加上一个final;
(3)、final修饰类:表示这个类想被继承