面向对象总结(下)

一、继承

1、  把多个类中的相同的属性和行为进行抽取,封装到一个类中,然后再建立新类的时候,不需要从头做起,继承刚才定义的那个类即可。

2、  继承的好处:

1)  提高了代码的复用性。

2)  让类与类之间产生了一个关系,是多态的前端。

3、  继承的弊端:

1)破坏了封装性。

2)提高了耦合性。

         4、继承的特点:

                   1)java只支持单继承。

                   2)java可以多层继承

         5、子类不能继承父类的私有成员和构造方法。

         6、继承中的成员的特点:

                   1)成员变量;

                            (1)一个属于this区域,一个属于super区域

                   2)构造方法

                            (1)子类构造在执行前会先执行父类构造。

                            (2)如果有继承关系,会有一个多层数据初始化。

                   3)成员方法:

                            (1)方法重写:

                                     <1>方法声明相同,最好和父类一模一样。

                                     <2>注意事项:

²  子类的返回值类型小于等于父类的返回值类型

²  子类的访问权限大于等于父类的访问权限

²  父类私有方法不能被重写

²  静态方法只能被静态方法重写

7、案例

         多个类中存在相同属性和行为时,将这些内容抽取出来,定义到一个类中。

         则这一个类为父类,多个类为子类。

 

         子类可以直接访问父类中的非私有的属性和行为。

         子类不可以直接访问父类的私有属性和行为。子类是看不到父类的私有方法的。

class Demo
{
         public static void main(String[] args)
         {
                   Person p = new Person();
                   p.eat();
                   System.out.println(p.age);
                   System.out.println(p.sex);
         }
}
class Animal
{
         int age;
         String sex;
 
         public void eat(){
                   System.out.println("吃了");
         }
}
 
//人类继承了动物
class Personextends Animal
{
}
//猴子继承了动物类
class Monkeyextends Animal
{
}
//海龟继承了动物类
class Turtleextends Animal
{
}


二、多态

1.      同一个对象在不同的时刻表现出来的状态。

1)      编译期类型和运行期类型不一致。

 2. 多态的前提:

         1)要有继承或者实现关系。

         2)要有方法重写:因为,很多时候,父类都是一个抽象的,如果没有方法重写,就没有意义。

         3)要有父类(或者父类接口)引用指向子类对象。

3.  多态的好处:

       1) 维护性

       2) 扩展性

4.  多态的弊端:

       1) 不能使用子类的特有功能

5.  类型转换

       1) 向上转型

       2) 向下转型

6.  多态中的成员的特点:

       1) 成员变量:编译看左边,运行看左边。

       2) 成员方法:编译看左边,运行看右边。

       3) 静态成员变量和静态成员方法:编译和运行都看左边。

7.  多态的体现形式:

       1) 具体类多态

       2) 抽象类多态

       3) 接口多态

三.抽象类

1. 多个具体的类中有相同的方法声明,方法体不同。我们把这多个方法声明给抽取出来了,而一个只有方法声明没有方法的方法在java中被称为抽象方法。并且,如果一个类中有抽象方法。那么,这个类也必须被定义为抽象类。

2. 抽象类的特点:

     1) 抽象类和抽象方法都必须用abstract修饰。

     2) 抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类。

     3) 抽象类不能被实例化。只能按照多态的的形式使用。

     4) 子类继承抽象类,要么本身是抽象类,要么重写父类所有抽象方法。

3. 抽象类的成员特点:

     1) 成员变量:可以是常量也可以是量。

     2) 构造方法:有。用于子类访问父类数据的初始化。

     3) 成员方法: 可以抽象也可以非抽象。

4. 抽象类的注意事项:

        1) 抽象类不能被实例化,那么还要构造方法干什么?

            用于子类方问父类数据的初始化。

2)  一个类中没有抽象方法,而该类却被定义为了抽象类,为什么?

为了让该类不能实例化

3)      Abstract不能和那些关键字共存?

Private    inal    static  

四.接口

         1.接口:如果一个抽象类中只有抽象方法,java就提供了一种更加抽象的表达方式,叫接口。

         2.接口的特点:

                   1)接口用interface定义

                   2)接口不能被实例化

                   3)接口中只有抽象方法

                   4)子类实现接口,要么本身就是抽象类,要么重写接口中所有抽象方法。

         3.接口的成员特点:

                   1)成员变量只能是常量。(public static final)

                   2)成员方法只能是抽象。(public abstrace)

         4.接口注意事项:

                   1)如果接口中没有内容,那么这样的接口有意义吗?

                            这样的接口是标记接口。

         5.抽象类和接口的区别:

                   1)成员的区别:

                            (1)抽象类的成员特点:

u  成员变量:可以常量,也可以变量。

u  构造方法:有。用于子类访问父类数据的初始化。

u  成员方法: 可以抽象也可以非抽象。

(2) 接口的成员特点:

u  成员变量:只能是常量。(publicstatic final)

u  成员方法: 只能是抽象。(publicabstract)

2) 关系区别:

         (1) 类与类:继承关系,只能是但继承。可以多层继承。

         (2) 类与接口:实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口。

         (3) 接口与接口:继承关系:可以单继承,也可以多继承。

     3) 设计区别:

          (1) 抽象类被继承体现的是:is a的关系。它里面定义的是该体系的共性功能。

          (2) 接口被实现体现的是:like a 的关系。它里面定义的是该体系的扩展功能。

五.内部类

         1.定义:内部类是把一个类定义在另一个类的内部。

         2.访问特点:

                   1)内部类可以直接访问外部类成员,包括私有。

                   2)外部类要想访问内部类成员,必须创建对象。

         3.按照位置划分内部类:

                   1)成员位置:成员内部类:private static

                   2)局部位置:局部内部类

                            (1)匿名内部类:

u  前提:存在一个类或者接口

u  格式:newParentName(){//内部类的定义}

u  理解:本质是一个继承了父类或者实现了接口的子类匿名对象。

六.关键词总结

         1.访问权限修饰符:public  protected  default  private(权限由大到小)

         2.引用修饰符:this  super

         3.抽象类关联:abstract  extends

         4.接口关联:interface  implements

         5.状态修饰符:static  final

 

                            





        

                            

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值