文章目录
1、封装
2、继承
3、多态
一、封装
(1)基本概念
封装是把过程和数据封闭起来以避免外界直接访问,外界只能通过已定义的接口实现对数据的访问。封装是一种信息隐藏技术,在java中通过关键字private实现封装。简单地说,封装实际上是将类的数据隐藏起来,并使用方法来控制用户对类的修改和访问数据的程度。
- 四种访问控制级别
Public(公共的):公共的访问权限,所有的类都能访问。
default(默认):在当前包内可访问。
Protected:在当前类和它的子类中可访问。
Private:在当前类中可访问。
- 封装使用
A、把尽可能多的东西藏起来,对外提高简洁的接口
比如要想去市场买个东西
没有使用封装的步骤:
1先想要买什么东西
2去市场
3挑选东西
4商讨价格
5买东西
6回家
而使用了封装之后的步骤:
1先想要买什么东西
2告诉其他人帮忙
3得到所需的东西
对比来看,我们就会发现,封装把去市场、挑东西、谈价格、买东西等细节,封装到了2让其他人帮忙里,这样为使用者提供了更加简单易用的接口,所以买东西会更加方便。
B、把所有属性藏起来
加入某种属性允许外界访问,那么提供访问该属性的公开方法。假如狗类有一个名字、年龄属性,不允许外界直接访问属性,但允许提供get和set方法来访问
- class Dogs{
- private String name; //名字
- private String age; //年龄
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAge() {
- return age;
- }
- public void setAge(String age) {
- this.age = age;
- }
- }
- 继承
继承:让某个类型的对象获得另一个类型的对象的属性和方法。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
(一)语法
class A extends B{}
子类从父类继承了什么?这要分两种情况
- 当A和B在同一包下,A继承了B中public、protected和默认访问级别的成员变量和成员方法
- 当A和B不在同一包下,A继承了B中public、protected成员变量和成员方法
- (二)继承父类成员变量/方法
- 大学生继承了父类学生
- class Student{
- public String collegename="清华大学";
- public void stady(){
- System.out.println("学习");
- }
- }
- //大学生
- class academician extends Student {
- public void test(){
- System.out.println(collegename);
- stady();
- }
- }
调用academician的test()方法,测试如下
清华大学
学习
测试结果:子类academician继承了父类的成员变量和成员方法
- 重载父类方法
重载方法必须满足以下条件:
1、方法名相同
2、方法的参数类型、个数、顺序至少有一项不同
3、方法的返回类型可以不同
4、方法的修饰符可以不相同
- 多态
多态:对于同一个行为,不同的子类对象具有不同的表现形式。多态存在的3个条件:
1继承 2重写 3父类引用指向子类对象。
public class extend {
public static void main(String[] args) {
Animal a = new Dog();
Animal b = new Cat();
a.say();
b.say();
}
}
abstract class Animal {
abstract void say();
}
//猫
class Cat extends Animal{
public String name="小黑";
public void say(){
System.out.println("喵喵喵");
}
}
//狗
class Dog extends Animal{
public String name="小白";
public void say(){
System.out.println("汪汪汪");
}
}
理解多态
在这个运行环境中,引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定。Java虚拟机会根据引用变量指向的对象来调用该对象的指定方法,这种运行机制被称为动态绑定