面向对象的进阶

1.static注意事项

  静态方法中,只能访问静态,静态方法中没有this关键字

  非静态方法可以访问所有

  静态方法中没有this关键字

2.静态:随着类的加载而加载  非静态:跟对象有关

   静态是无法调用非静态的

  

 

3.面向对象的三大特征:封装、继承、多态

4.封装:对象代表什么,就得封装对应的数据,并提供对应的行为

5.继承:java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继  承关系。

public class Student extends Preson{}        

Student称为子类(派生类),Person称为父类(基类或超类)

使用继承的好处:可以把个子类中重复的代码抽取到父类中了,提高代码的重复性。子类可以在父类的基础上,增加其他的功能,使子类更强大。

6.继承的特点:java只能单继承:一个类只能继承一个直接父亲类。java不支持多继承,但是支持多层继承。java中所以的类都直接或间接继承于Object类。

7.子类到底能继承父类中的哪些内容

8.虚方法表:非private,非static,非final

9.

10.继承中成员变量的访问特点:就近原则,先在局部位置找,本类成员位置找,父亲位置成员找,逐级往上

11.如果出现了重名的成员变量怎么办?

   

   super调用直接访问父类

12.代码练习

public class text8 {
    public static void main(String[]args){
        OverseasStudnet s=new OverseasStudnet();
        s.lunch();
    }
}
class Person{
    public void eat(){
        System.out.println("吃米饭,吃菜");
    }
    public void drink(){
        System.out.println("喝开水");
    }
}
class OverseasStudnet extends Person{
    public void lunch(){
        this.eat();
        this.drink();
        super.eat();
        super.drink();
    }
    public void eat(){
        System.out.println("吃意大利面");
    }
    public void drink(){
        System.out.println("喝凉水");
    }
}
class Students extends Person{
    public void lunch(){
        //现在本类中查看eat和drink方法,就会调用子类的,如果没有,就会调用从父类中继承下来的eat和drink方法
        eat();
        drink();
        //直接调用父类中的eat和drink方法
        super.eat();
        super.drink();
    }
}

13.方法的重写:当父类的方法不能满足子类现在的需求时,需要进行方法重写

     书写格式:在继承体系中,子类出现了和父亲一模一样的方法声明,我们就称子类这个方法是重       写的方法

      如果发生了重写,则会覆盖

14.方法重写注意事项和要求

     重写方法的名称、形参列表必须与父类中的一致。

    子类重写父类的方法时,访问权限子类必须大于等于父类。

    子类重写父类方法时,返回值类型子类必须小于等于父类。

     建议:重写的方法尽量和父类保持一致。

     只有被添加到虚方法表中的方法才能被重写

15.this,super算法总结

     

   

16,什么是多态?

       同类型的对象,表现出的不同形态 

       多态的表现形式

       父亲类型 对象名称=子类对象

       多态的前提

       有继承关系,有父类引用指向子类对象,有方法重写

17.多态调用成员的特点

    变量调用:编译看左边,运行也看左边

    方法调用:编译看左边,运行看右边

18.多态的优势

      在多态形式下,右边对象可以实现解耦合,便于扩展和维护

     定义方法的时候,使用父类型做为参数,可以接受所有子类对象,体现了多态的扩展性与便利

19.多态的弊端

     不能调用子类的特有功能 

     解决方案:变回子类类型就可以

20.引用数据类型的类型转换,有几种形式?

    自动类型转换、强制类型转换

    Person p=new Student();

    Student s=(Student)p;

21.强制类型转换能解决什么问题

    可以转换成真正的子类类型,从而调用子类的独有功能 

    转换类型与真实对象类型不一致会报错

    转换的时候用instanceof关键字进行判断     

22.instanceof关键字

     instanceof是java的保留关键字,它的作用是测试它左边对象是否是它右边类的实例,返回            boolean的数据类型

23.什么是包

     包就是文件夹,用来管理各种不同功能的java类,方便后期代码维护

24.包的规则

     使用同一个包中类时,不需要导包

     使用java.lang包中类时,不需要导包

     其它情况都需要导包

     如果同时使用两个包中的同名类,需要用全类名

25.包名书写的规则

     公司域名反写+包的作用,需要全部英文小写,见名知意

26.什么是全类名

     包名+类名

27.final

     方法:表明该方法是最终方法,不能被重写

     类:表明该类是最终类,不能被继承

     变量:叫做常量,只能被赋值一次    

     final 修改基本数据类型:记录的值不能发生改变

     final 修饰引用数据类型:记录的地址值不能发生改变,内部的属性值还是可以改变的

28.权限修饰符的分类

       

 29.构造代码块

       写在成员位置的代码块

       作用:可以把多个构造方法中重复的代码取出来

       执行时机:我们在创造本类对象的时候会先执行构造代码块再执行构造方法

30.静态代码块

     格式:static{}

     需要通过static关键字修饰,随着类的加载而加载,并且自动触发,只执行一次

    使用场景:

31.抽象方法

     将共性的行为(方法)抽取到父类之后。由于每个子类执行的内容是不一样,所以,在父类中      不能确定具体的方法体。该方法就可以定义为抽象方法 

32.抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

33.抽象类和抽象方法的定义格式

     抽象方法的定义格式:public abstract 返回值类型  方法名(参数列表);

     抽象类的定义格式:public abstract class 类名{}

34.抽象类的作用

     抽取共性时,无法确定方法体,就把方法定义为抽象的,强制让子类按照某种格式写。抽象方       法所在的类,必须是抽象类

35.接口

     接口是一种规则,是对行为的抽象

36.接口的定义和使用

     接口关键字interface来定义

     public interfance 接口名{}

     接口不能实例化。接口和类之间是实现关系,通过implements关键字表示, 

     public class 类名 implements 接口名{}

     接口的子类(实现类),要么重写接口中的所有抽象方法,要么是抽象类。

     注意1:接口和类的实现关系,可以单实现,也可以多实现。

                  public class类名 implements 接口名1,接口名2{}

     注意2 :实现类还可以在继承一个类的同时实现多个接口。

                  public class 类名 extends 父类 implements 接口名1,接口名2{}       

37.接口成员的特点

     成员变量:只能是常量。  默认修饰符:public staic final

     构造方法: 没有

     成员方法:只能是抽象方法。 默认修饰符:public abstract

38. 接口和类之间的关系

      类和类的关系:继承关系,只能单继承,不能多继承,但是可以多层继承

      类和接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的的同时实现        多个接口

      接口和接口的关系:继承关系,可以单继承,也可以多继承

39. 什么是内部类

      类的五大成员:属性、方法、构造方法、代码块、内部类

40.内部类的访问:内部类可以直接访问外部类的成员,包括私有。外部类要访问内部类的成员,

      必须创建对象。

41.什么时候用到内部类   

     B类表示的事物是A类的一部分,且B单独存在没有意义       

     比如:汽车的发动机,ArrayList的迭代器,人的心脏等等 

42.

43.静态内类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象

44.局部内部类

    1.将内部类定义在方法里面就叫做局部内部类,类似于方法里面的局部变量。 

     2.外界是无法直接使用,需要在方法内部创建对象并使用。 

     3.该类可以直接访问外部类的成员,也可以访问方法内的局部变量

45.什么是匿名内部类

      隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置

46.匿名内部类的格式

     new 类名或者接口名(){

            重写方法;   

     };

47.格式的细节

     包含了继承或实现,方法重写,创建对象。整体就是一个类的子类对象或者接口的实现对象。

48.使用场景

     当方法的参数是接口或者类时,以接口为例,可以传递这个接口的实现对象,如果实现类只要       使用一次,就可以用匿名内部类简化代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值