访问权限(从大到小)
1.public :公共权限,在系统内都可以访问
(修饰类,方法(构造方法、成员方法),成员变量)
2.protected:受保护权限,在本类,同包类,不同包子类中可以访问
3.:默认权限,在本类,同包类中可以访问
(修饰内部类,方法(构造方法,成员方法),成员变量)
4.private: 私有权限 只能在本类中使用
表格:
public | protected | default | private | |
---|---|---|---|---|
同类 | √ | √ | √ | √ |
同包 | √ | √ | √ | |
不同包的子类 | √ | √ | ||
不同包的无关类 | √ |
子类和父类
-
非private修饰的父类的方法和变量可以通过extends关键词被子类继承。
-
父类方法中的功能,不能满足子类中的需要,可以将父类中的方法在子类中重写
一、继承:
在类中可以加入extends关键词将 (类1)继承(类2)
类1可以继承类2中的实例变量以及实例代码块和实例方法
-
继承的特点
-
一个子类只能够继承一个父类,存在单继承局限。
-
Java之中只允许多层继承,不允许多重继承,Java存在单继承局限。
比如 动物-----> 狗 -----> 柯基
-
子类会找到父类中的无参构造方法。
下面是代码举例
-
public class Pet {
String name;
int age;
public void eat(){
System.out.println("吃饭");
}
}
public class Cat extends Pet{}
public class PetTest {
public static void main(String[] args) {
Cat coco=new Cat();
coco.age=15;
coco.name="coco";
}
}public class Pet {
String name;
int age;
public void eat(){
System.out.println("吃饭");
}
}
public class Cat extends Pet{}
public class PetTest {
public static void main(String[] args) {
Cat coco=new Cat();
coco.age=15;
coco.name="coco";
}
}
二、方法的重写
可以直接将父类中的方法重新覆盖
限制:构造方法和静态方法不能重写
规则:
-
方法名、参数、返回值类型相同。
-
子类的访问权限要大于等于父类权限。
举例
public class Pet {
String name;
int age;
public void eat(){
System.out.println("吃饭");
}
}
public class Cat extends Pet{
//@Override 会在编译期间检测是否重写覆盖成功
@Override
public void eat()
{
System.out.println("猫猫吃饭")
}
}
public class PetTest {
public static void main(String[] args) {
Cat coco=new Cat();
coco.age=15;
coco.name="coco";
}
}